2015-07-20 493 views
4

我有一個網頁抓取工具,它將論壇問題分解成單個單詞並將其寫入文本文件。單詞存儲在一個元組列表中。每個元組都包含這個詞和它的頻率。是這樣的...Python:使用正則表達式從字符串中去除 u200b

[(u'move', 3), (u'exploration', 4), (u'prediction', 21), 
(u'find', 5), (u'user', 2), (u'interface', 2), (u'pleasant', 2), 
(u'am', 11), (u'puzzled', 2), (u'find', 5), (u'way', 5), 
(u'prediction', 21), (u'mode', 2), (u'have', 21), 
(u'explored', 2), (u'file', 9), (u'Can', 7), (u'help', 6), 
(u'Possible', 1), (u'bug', 2), (u'data', 31), (u'is', 17) 

然而,在論壇上一些人用它打破我的代碼,因爲這個角色不再是一個Unicode空白字符\ u200b。

(u'used\u200b', 1) 

打印出來並不會產生錯誤,但是寫入文本文件卻有問題。我發現string.strip()string.replace()沒有幫助,所以我想知道如何使用正則表達式庫來擺脫該字符。我打算通過解析整個元組列表來找到它。

回答

3

我測試了python 2.7。 replace按預期工作:

>>> u'used\u200b'.replace(u'\u200b', '*') 
u'used*' 

也是如此條:

>>> u'used\u200b'.strip(u'\u200b') 
u'used' 

只要記住,參數這些功能必須是Unicode文本。它應該是u'\u200b',而不是'\u200b'。在開始時注意u

實際上,將該字符寫入文件可以很好地工作。

>>> import codecs 
>>> f = codecs.open('a.txt', encoding='utf-8', mode='w') 
>>> f.write(u'used\u200bZero') 

見資源:

+0

'分裂()'和'replace'不正確的方式,因爲你不會遭遇總是用'u200'。 – Kasramvd

+0

@Kasramvd你可以給一個以上的字符作爲'strip'的參數。還有很多方法可以替換多個字符(例如使用正則表達式)。 – roeland

+0

.replace在Python3.5中運行良好 –

相關問題