給定文件所包含的行如:Python原始字符串賦值
(?i:\bsys\.user_catalog\b)
在閱讀這些線,我希望值是原始的字符串(轉義),這意味着,在內存中,行應該是
r'(?i:\bsys\.user_catalog\b)'
代替
(?i:\bsys\.user_catalog\b)
當傳遞到庫如的SQLObject這是逃脫。
例如,對於SQLObject的,如果我的狀態
Table(column=r'(?i:\bsys\.user_catalog\b)')
我得到想要的結果,而如果我說出
Table(column='(?i:\bsys\.user_catalog\b)')
我不知道。
所以問題是基本上,我可以傳遞一個原始字符串,當我不處於聲明/分配模式(例如a = r'string'
),而是字符串已經在內存中。
「如果您從文件中讀取字符串,它將已正確轉義。」這有點讓人誤解。更準確地說,「轉義」的概念不適用於字符串**對象**,而僅適用於字符串**文字**。如果從文件中讀取一個反斜槓,則會得到一個帶有一個反斜槓的字符串。如果你寫'「\\」',你會得到一個帶有一個反斜槓的字符串。轉義只發生在源代碼中,這樣就可以清楚地說出字符串的部分內容以及代碼的其餘部分。一旦字符串對象被創建,這已經很清楚了。 –
同樣,原始字符串不會「轉換」;他們是*替代語法*用於創建*相同類型的對象*。 –
@KarlKnechtel:謝謝你的澄清。我希望我可以像這樣寫:) –