簡體   English   中英

Python:將原始字符串寫入文件

[英]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\ ')

你可以不打擾,所以這可能是一個解決方案。

假設someStringHallo

這會將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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM