使用Python替换文本文件中的字符串会添加奇怪的字符

时间:2013-03-15 16:47:58

标签: python text

我想使用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()

在输出文本中,路径中的以下内容将替换为正方形(奇怪的字符):

  • \ a =更改为方格
  • \ r =更改为方格
  • \ 3 =更改为方格

我的代码是否有问题或上述字母是否为系统保留?

3 个答案:

答案 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>'))