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

时间:2012-06-08 11:09:13

标签: python

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

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

希望r前缀能让事情发挥作用。但是,我仍然收到错误:

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

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

5 个答案:

答案 0 :(得分:4)

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

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

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

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

答案 1 :(得分:3)

Python raw stings can't end with a backslash

然而,有一些解决方法。

您只需在字符串的末尾添加一个空格:

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

你可能不会那么烦,所以这可能是一个解决方案。

假设someString Hallo

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

如果您不喜欢额外的空间,可以将其删除:

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

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

答案 2 :(得分: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()

答案 3 :(得分:0)

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

逃避你的琴弦^^

答案 4 :(得分:0)

如果没有转义,就无法获得任意内容的字符串文字。你将永远遇到问题,因为没有办法例如具有“文字结尾字符”,在这种情况下'没有逃避,因为Python无法判断它是否是结束字符串文字或部分字符串。

这就是我们首先逃离的全部原因。所以你的问题的答案是:你做不到。不是Python或任何其他语言。