为什么Python会将双反斜杠替换为单斜杠?如何保留双反斜杠?
问题成因
- 反斜杠
\在Python普通字符串中是转义字符:你在字符串字面量中写的\\,实际会被解释器处理为单个反斜杠存储,print输出时自然只会显示单个反斜杠,这不是异常替换问题,是Python字符串的正常语法规则。 - 你尝试的
replace('\', '\\')本身存在语法错误:第一个参数里的反斜杠会转义后续的闭合单引号,导致字符串未闭合,代码根本不会正常执行,自然没有效果。
解决方法
方法1:需要输出双反斜杠时调整转义数量
如果你的需求是生成可直接复制运行的pd.read_csv代码片段,要输出两个反斜杠的话,字符串里需要写4个反斜杠:每两个反斜杠转义为1个,4个最终就会输出2个。修改后的代码如下:
for i in folder_names: print(f"pd.read_csv('C:\\\\Users\\\\User\\\\Desktop\\\\Python\\\\4_Мини-проект\\\\data\\\\2020-12-03\\\\{i}\\\\data.csv')")
方法2:用正斜杠替代反斜杠(最简单)
Python在Windows系统下也完全支持正斜杠/作为路径分隔符,不存在转义问题,直接写就可以:
for i in folder_names: print(f"pd.read_csv('C:/Users/User/Desktop/Python/4_Мини-проект/data/2020-12-03/{i}/data.csv')")
生成的代码可以直接运行,不需要做任何转义处理。
方法3:用标准库自动处理路径(最推荐)
手动拼接路径很容易出错,建议直接用Python自带的路径处理工具,自动适配系统分隔符,完全不用关心转义问题:
使用pathlib(Python3.4+推荐)
from pathlib import Path base_path = Path('C:/Users/User/Desktop/Python/4_Мини-проект/data/2020-12-03') for i in folder_names: file_path = base_path / i / 'data.csv' # 直接读取就用 pd.read_csv(file_path) # 要输出代码片段的话用: print(f"pd.read_csv(r'{file_path}')")
使用os.path.join
import os base_path = 'C:/Users/User/Desktop/Python/4_Мини-проект/data/2020-12-03' for i in folder_names: file_path = os.path.join(base_path, i, 'data.csv') print(f"pd.read_csv(r'{file_path}')")
内容的提问来源于stack exchange,提问作者salehelas
相关产品推荐
相关产品推荐

