Python:将原始字符串写入文件

4
我希望使用Python脚本生成C代码,不需要转义字符。例如,我已经尝试过:
myFile.write(someString + r'\r\n\')

希望使用r前缀使事情正常工作。然而,我仍然遇到了错误:
myFile.write(someString + ur'\r\n\')
                                   ^
SyntaxError: EOL while scanning string literal

如何在Python中将原始字符串写入文件?
5个回答

4

Python原始字符串不能以反斜杠结尾

但是,有一些变通方法。

您可以在字符串结尾添加一个空格:

>>> with open("c:\\tmp\\test.txt", "w") as myFile:
...   myFile.write(someString + r'\r\n\ ')

你可能不会介意,这可能是一个解决方案。

假设someStringHallo

这将写入Hallo\r\n\_到文件中,其中_是一个空格。

如果你不喜欢额外的空格,可以这样移除:

>>> with open("c:\\tmp\\test.txt", "w") as myFile:
...   myFile.write(someString + r'\r\n\ '[:-1])

这将会把Hallo\r\n\写入文件,没有额外的空格,并且不转义反斜杠。

4

您需要转义最后一个 \,这样它就不会转义字符串的末尾,但如果将其作为原始字符串的一部分放置,它将无法得到您想要的结果:

>>> r'\r\n\\'
'\\r\\n\\\\'

然而,Python的字符串文本拼接允许您混合使用原始字符串和普通字符串:

>>> r'\r\n' '\\'
'\\r\\n\\'

1

您可以通过格式化方法将原始字符串插入到字符串中。这样可以确保原始字符串被正确转义后插入。

例如:

mystring = "some string content {0}"
# insert raw string 
mystring = mystring.format(r"\r\n\\")

myfile = open("test.txt", "w")
myfile.write(mystring)
myfile.close()

0
myFile.write(someString + r'\r\n\\')

只需转义您的字符串 ^^


在这里正确转义字符串更加复杂:\\r\\n\\。而且以后会变得更棘手。 - Randomblue
你实际上想要在文件中写入\n\r吗? - Jakob Bowyer
是的,我想要按照“r”前缀所建议的方式精确地写入\r\n. - Randomblue
逐个字符编写它们,如果是\则转义。 - Jakob Bowyer
请解释为什么你必须这样做。 - Mechanical snail

0

没有办法在不转义的情况下使用任意内容的字符串字面量。你总会遇到问题,因为例如在这种情况下没有“字面量结束字符”,即 ',而不进行转义,Python 将无法确定它是字符串字面量的结尾还是其中的一部分。

这就是为什么我们首先需要转义的全部原因。所以你的问题的答案是:你不能。无论是在 Python 还是其他任何语言中都不行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接