我有一個段落,我想通過從單詞中分離標點符號來標記它,並打印結果。有一些特殊情況(縮寫,如美國&,如彼得的撇號,以及十進制數字)應附加在信件上,不要將它們分開。正則表達式模式的縮寫和標點符號
我運行下面的代碼:
import re
text = "My weight is about 68 kg, +/- 10 grams! I live in U.S.A. at Mr.
Peter's house! 3,500 calorie rule, which equates a weight alteration
of 2.2 lb"
pattern = r"""(?:[A-Z]\.)+ |\d+(?:\.\d+)?%?|\w/.+$\s-|\w+(?:[-']\w+)*|
(?:[+/\[email protected]&*]|/.$/)"""
print (re.findall(pattern, text))
輸出:
['My', 'weight', 'is', 'about', '68', 'kg', '+', '/', '-', '10',
'grams', 'I', 'live', 'in', 'U.S.A. ', 'at', 'Mr', "Peter's", 'house',
'3', '500', 'calorie', 'rule', 'which', 'equates', 'a', 'weight',
'alteration', 'of', '2.2', 'lb'
]
有一些錯誤與此代碼,我真的很需要幫助解決這些問題:
它刪除所有的標點符號!我想保留它們,但是與單詞分離。
該模式忽略數字包含(,)並將其刪除。我已將
\d+(?:\,\d+)?%?
添加到該模式,但無法正常工作。模式也忽略了一些縮寫,如
Mr.
您的幫助將是非常讚賞!
我不認爲這是完全可能的。正則表達式應該如何知道「美國」的最後一點?是否結束句子? – Emaro