2013-06-19 53 views
0

如何將"\" char添加到字符串?將「」添加到字符串Python |如何在每個paren之前的字符串中插入「」?

舉例來說,如果我有"testme"和我做

"testme"+"\" 

我會得到一個錯誤。

什麼是「pythonic」方法在字符串中的每個paren之前添加"\"

例如從"(hi)" to "\(hi\)"

我目前的做法是去通過每個字符迭代,並嘗試追加"\",我覺得是不是「Python的」

+0

http://stackoverflow.com/questions/4202538/python-escape-special-characters – dansalmo

回答

9

反斜槓用於轉義各種人物,所以在您的字符串中的反斜槓,你需要使用"\\",例如:

所以,你必須使用另一個\逃脫\第一

>>> print "testme" + "\\" 
testme\ 

所以每個括號前添加一個反斜槓在字符串中,你可以使用以下命令:

s = s.replace('(', '\\(').replace(')', '\\)') 

或者使用正則表達式:

import re 
s = re.sub(r'([()])', r'\\\1', s) 

請注意,您還可以通過在開引號前面加一個字母r使用原始字符串字面量,這使得它,這樣反斜線字面解釋並沒有逃脫已經完成了。因此r'foo\bar'將與'foo\\bar'相同。所以,你可以重寫像下面的第一種方法:

s = s.replace('(', r'\(').replace(')', r'\)') 

注意,即使在原始字符串字面量可以用一個反斜槓逃脫用於字符串字面引號,所以r'we\'re'相同'we\'re'"we're" 。這就是爲什麼原始字符串文字不能很好地工作,當你想最後一個字符是反斜槓,例如r'testme\'(這將是一個語法錯誤,因爲字符串文字從不關閉)。

0
>>> import re 
>>> strs = "(hi)" 
>>> re.sub(r'([()])',r'\\\g<0>',strs) 
'\\(hi\\)' 

"\"是無效的,因爲你正在逃避這裏的結束語,所以python會引發EOF錯誤。

>>> "\\" 
'\\' 
>>> "\" 
    File "<ipython-input-23-bdc6fd40f381>", line 1 
    "\" 
    ^
SyntaxError: EOL while scanning string literal 

>>> 
相關問題