[英]Python: Writing raw strings to a file
我想用Python腳本生成C代碼,而不必逃避。 例如,我試過:
myFile.write(someString + r'\r\n\')
希望r
前綴能使事情發揮作用。 但是,我仍然收到錯誤:
myFile.write(someString + ur'\r\n\')
^
SyntaxError: EOL while scanning string literal
如何在Python中將原始字符串寫入文件?
你需要逃避最后一個\\
所以它不會逃避字符串的結尾,但如果你把它作為原始字符串的一部分,它將無法得到你想要的東西:
>>> r'\r\n\\'
'\\r\\n\\\\'
但是,Python的字符串文字串聯允許您混合原始字符串和普通字符串:
>>> r'\r\n' '\\'
'\\r\\n\\'
Python原始蜇不能以反斜杠結束 。
但是,有一些解決方法。
您只需在字符串的末尾添加一個空格:
>>> 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\\
寫入文件,沒有額外的空格,也沒有轉義反斜杠。
您可以通過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()
myFile.write(someString + r'\r\n\\')
只是逃避你的字符串^^
沒有轉義就沒有辦法獲得任意內容的字符串文字。 你將永遠遇到問題,因為沒有辦法例如具有“文字結尾字符”,在這種情況下'
沒有轉義,因為Python將無法判斷它是否是字符串文字的結尾或部分。
這就是我們首先逃離的全部原因。 所以你的問題的答案是:你做不到。 不是Python或任何其他語言。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.