1

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

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

4

3 回答 3

5

Python 字符串支持转义码;带有某些字符的反斜杠被它们所代表的代码替换。\r被解释为 ASCII 换行符,例如,\a是 ASCII BELL,并被\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>'
于 2013-03-15T16:50:07.647 回答
0

您的字符串有反斜杠,在 Python 中作为转义码读取。这些是将反斜杠前面的字符更改为特殊字符时。例如,\n是换行符。您将需要转义它们(使用另一个反斜杠)或只使用原始字符串。

r'C:\Software\api\render\3bit\sim>'
于 2013-03-15T16:51:06.350 回答
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>'))
于 2013-03-15T16:52:14.103 回答