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

使用Python替换文本文件中的字符串会添加奇怪的字符,python,text,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

我想使用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=变为正方形

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

Python字符串支持转义码;带有特定字符的反斜杠将替换为它们所表示的代码<代码>\r被解释为ASCII换行字符,例如,
\a
是ASCII铃声,
\3
被解释为ASCII码点3(八进制编号)。请参阅Python

要禁用正在解释的转义码,请使用原始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>'

Python字符串支持转义码;带有特定字符的反斜杠将替换为它们所表示的代码<代码>\r被解释为ASCII换行字符,例如,
\a
是ASCII铃声,
\3
被解释为ASCII码点3(八进制编号)。请参阅Python

要禁用正在解释的转义码,请使用原始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>'

字符串有反斜杠,在Python中作为转义码读取。当前面带有反斜杠的字符更改为特殊字符时,会出现这种情况。例如,
\n
是一个换行符。您需要对它们进行转义(使用另一个反斜杠),或者只使用原始字符串

r'C:\Software\api\render\3bit\sim>'

字符串有反斜杠,在Python中作为转义码读取。当前面带有反斜杠的字符更改为特殊字符时,会出现这种情况。例如,
\n
是一个换行符。您需要对它们进行转义(使用另一个反斜杠),或者只使用原始字符串

r'C:\Software\api\render\3bit\sim>'

在每个path文件之前,添加一个“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>'))

在每个path文件之前,添加一个“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>'))

我对Windows了解不多,但前斜杠不也有用吗?我可以发誓我在什么地方读到过。@DSM:当使用路径时,是的,正斜杠也可以。但是这是关于修改文本的,所以我们不能假设正斜杠在这里就行了。我对Windows不太了解,但正斜杠也行吗?我可以发誓我在什么地方读到过。@DSM:当使用路径时,是的,正斜杠也可以。但这是关于修改文本的,所以我们不能假设正斜杠在这里就可以了。