我想用Python脚本生成C代码,而不必逃避。例如,我尝试过:
myFile.write(someString + r'\r\n\')
希望r
前缀能让事情发挥作用。但是,我仍然收到错误:
myFile.write(someString + ur'\r\n\')
^
SyntaxError: EOL while scanning string literal
如何在Python中将原始字符串写入文件?
答案 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或任何其他语言。