4

我想用 Python 脚本生成 C 代码,而不必逃避。例如,我尝试过:

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

希望r前缀能让事情顺利进行。但是,我仍然收到错误消息:

myFile.write(someString + ur'\r\n\')
                                   ^
SyntaxError: EOL while scanning string literal

如何将原始字符串写入 Python 中的文件?

4

5 回答 5

4

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

但是,有一些解决方法。

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

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

您可能不会为此烦恼,因此这可能是一个解决方案。

假设someString你好

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

如果你不喜欢多余的空间,你可以像这样删除它:

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

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

于 2012-06-08T11:38:16.663 回答
4

你需要转义最后一个\,这样它就不会转义字符串的结尾,但是如果你把它作为原始字符串的一部分,它不会得到你想要的东西:

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

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

>>> r'\r\n' '\\'
'\\r\\n\\'
于 2012-06-08T11:31:30.583 回答
1

您可以通过 format 方法将原始字符串插入到字符串中。这样可以确保插入原始字符串并进行适当的转义。

例子:

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

myfile = open("test.txt", "w")
myfile.write(mystring)
myfile.close()
于 2012-06-08T11:50:21.627 回答
0
myFile.write(someString + r'\r\n\\')

只是逃避你的字符串^^

于 2012-06-08T11:10:30.157 回答
0

没有转义就无法获得任意内容的字符串文字。你总是会遇到问题,因为没有办法例如有“文字结尾字符”,在这种情况下'没有转义,因为 Python 无法判断它是字符串文字的结尾还是一部分。

这就是我们一开始就逃跑的全部原因。所以你的问题的答案是:你不能。不在 Python 或任何其他语言中。

于 2012-06-08T11:13:47.020 回答