2017-05-03 236 views
3

所以我試圖運行這個命令if r"\" in text:它不起作用。它認爲整條線是一條線。我該如何解決?如何測試符號(反斜槓)是否在字符串中?

+4

'if r「\\」in text' –

+0

特殊字符需要轉義。 – GhostCat

+2

下次您提出問題時,請確保您顯示了您獲得的錯誤類型,並且提供了重現錯誤的最低代碼。請參閱https://stackoverflow.com/help/how-to-ask和https://stackoverflow.com/help/mcve – Antonio

回答

6

原始文字不完全。文件的有關段落是在https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals最底部,就在接下來的一節(「字符串字面串聯」)開始:

即使在原始文字,引號可以用反斜槓進行轉義,但反斜線仍然在結果中;例如,r"\""是由兩個字符組成的有效字符串文字:反斜槓和雙引號; r"\"不是有效的字符串字面值(即使原始字符串不能以奇數個反斜槓結尾)。具體而言,原始文字不能以單個反斜槓結尾(因爲反斜槓會轉義下面的引號字符)。還要注意的是,一個反斜槓後跟一個換行符被解釋爲這兩個字符作爲文字的一部分,而不是作爲續行。

(重點在原創。)

所以,你可以寫r"\\"並獲得含反斜槓一個字符串,你可以寫r"\""並獲得包含一個反斜槓和一個雙引號字符的字符串,但是如果你想要一個包含的字符串,只需要一個反斜槓,那麼你不能用原始文本來完成。您需要改爲編寫"\\"

3

使用此:

"\\" 

也就是說,一個轉義反斜槓,而不是逃脫報價。

3

你正在努力逃避字符。

因爲\是你逃跑的轉義字符它意味着「這個角色」,而不是「什麼下面將進行轉義」。

if '\\' in 'foo\\': 
2
if "\\" in text 

這應該工作,你只需要逃避它