繁体   English   中英

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

[英]Replacing strings in a text file using Python adds weird characters

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM