我想使用Python将文本替换为文本文件每行中的路径,但是我在输出文件的路径中得到了奇怪的字符(正方形)。
当前代码:
#!/usr/bin/env python
f1 = open('input.txt', 'r')
f2 = open('output.txt', 'w')
for line in f1:
f2.write(line.replace('test/software', 'C:\Software\api\render\3bit\sim>'))
f1.close()
f2.close()
在输出文本中,路径中的以下内容将替换为正方形(奇怪的字符):
我的代码是否有问题或上述字母是否为系统保留?
答案 0 :(得分:5)
Python字符串支持转义码;带有某些字符的反斜杠被它们代表的代码替换。 \r
被解释为ASCII换行符,例如,\a
是ASCII BELL,\3
被解释为ascii代码点3(以八进制编号)。请参阅Python string literal documentation。
要禁用正在解释的转义码,请使用原始python字符串,方法是在字符串定义前加上r
:
r'C:\Software\api\render\3bit\sim>'
所以你的行上写着:
f2.write(line.replace('test/software', r'C:\Software\api\render\3bit\sim>'))
或者,将反斜杠加倍,将它们解释为文字反斜杠:
'C:\\Software\\api\\render\\3bit\\sim>'
答案 1 :(得分:0)
你的字符串有反斜杠,在Python中作为转义码读取。这些是以反斜杠开头的字符变为特殊字符的情况。例如,\n
是换行符。您将需要转义它们(使用另一个反斜杠)或只使用原始字符串。
r'C:\Software\api\render\3bit\sim>'
答案 2 :(得分:0)
在每个路径文件之前,添加“r”字符以创建原始字符串,这可能会解决问题。例如:
f2.write(line.replace('test/software', r'C:\Software\api\render\3bit\sim>'))
或者,逃避你的反斜杠:
f2.write(line.replace('test/software', 'C:\\Software\\api\\render\\3bit\\sim>'))