2013-10-14 46 views
0

如果我有一個字符串,例如:'我無法解析此字符',並且中間帶有一個單引號,那麼如何在不出現語法錯誤的情況下刪除該字符串並返回ICANTPARSETHIS?我知道如果它是「我無法解析這個」,它會起作用,但我正在研究一個潛在的輸入可能沒有雙引號的問題。使用Python中的單引號解析字符串

+0

引號只是字符串文字中的語法錯誤,可以通過適當的引用或使用三引號字符串來處理。 –

+1

但它聽起來好像你正在嘗試處理程序輸入,而在這種情況下,它是*不是問題*。你究竟在做什麼? –

+0

如果您在Python 2中使用'input()',請改用'raw_input()',避免將輸入視爲Python表達式。 –

回答

4

你在這裏誤解了一些東西。這裏根本沒有問題。

語法錯誤僅適用於源代碼。字符串值是而不是源代碼。

如果你的源代碼使用字符串文字,Python解析這些併產生一個字符串值。字符串文字可以有一個語法錯誤,但如果沒有錯誤,它會產生一個字符串值,就是這個值。

在Python解釋器中,這樣的字符串值使用與字符串相同的格式表示,以便於調試和複製回解釋器。放心,Python解釋器知道如何正確地逃避這種價值觀報價:使用最低報價要求的風格

>>> """Text with a single quote: '""" 
"Text with a single quote: '""" 
>>> """We can use a double quote too: ". See?""" 
'We can use a double quote too: ". See?' 
>>> """Even mixing " and ' is not a problem.""" 
'Even mixing " and \' is not a problem.' 

我用三引號文字語法在那裏,但是Python回聲的替代品,並根據需要逃脫報價符號。

2
print "Parse 'this string' to something".split() 
print re.findall(some_pattern,"this is a string with `internal quotation` marks") 
print 'quotes' == "quotes" == """quotes""" == '''quotes''' == u'quotes' == u"quotes" 

林不知道你的問題是什麼...但是這兩個例子表明,你可以用內部引號解析字符串

還表明,報價都是一樣的基本

1

所以我理解是你想刪除「不能」的撇號?

'I can't parse this'.replace("'", "") 
>>> 'I cant parse this' 

,或者如果你有它的一個變量:

s = 'I can\'t parse this' 
s.replace("'", "") 
>>> 'I cant parse this' 

編輯:正如指出的第二個例子是沒有對單引號轉義字符語法錯誤。

+1

您的第二個示例是語法錯誤 –

+0

我忘記了轉義字符,但是基本上將字符串設置爲雙引號,並且單引號仍然存在。 – actionseth

+0

**正好**,這說明OP不知道這裏發生了什麼。你呢? –