2012-04-21 63 views
1

我在學習使用Python 2.7蟒蛇正則表達式:如何根據字母,數字和標點符號

正則表達式給出一個句子串分成不同的組(假設爲小寫字母和ASCII)如:

input = 'i like: a, b, 007 and c!!' 

如何將令牌化輸入字符串轉換成

['i', 'like', ':', 'a', ',', 'b', ',', '007', 'and', 'c', '!!'] 

我可以寫的自動機和代碼在C++的轉換矩陣,但我想這樣做在python

我無法想出一個正則表達式,可以一次匹配這些不同類別的字母,數字和標點符號。

我已經看到了一些stackoverflow的帖子herehere,但不完全按照他們的方法。

我已經嘗試了一段時間了,現在我很感激你的幫助。

PS:這不是一門功課的問題

+0

使用're'模塊 – Shep 2012-04-21 15:29:31

+0

我已經使用're'模塊,並且可以分別將 [az] +,[0-9] +,[^ a-z0-9 \ s] +組合成一個正則表達式,輸出 – user1290793 2012-04-21 15:31:25

回答

3
>>> from string import punctuation 
>>> text = 'i like: a, b, 007 and c!!' 
>>> re.findall('\w+|[{0}]+'.format(punctuation),text) 
['i', 'like', ':', 'a', ',', 'b', ',', '007', 'and', 'c', '!!'] 

這也適用,但認爲任何非空白字符,如果它沒有找到字母數字字符

>>> re.findall('\w+|\S+',text) 
['i', 'like', ':', 'a', ',', 'b', ',', '007', 'and', 'c', '!!'] 
+0

在第一個示例中,[{0}]是做什麼的?我無法把頭圍住它。 – 2012-04-21 15:36:34

+0

將'0th'參數替換爲標點符號的格式。來自標點符號的任何信件。 – jamylak 2012-04-21 15:37:07

+0

你的答案很優雅。一個小細節 - 我希望分別將字母,數字和標點符號分組,而\ w將'_'也作爲單詞字符。我想用您的解決方案中的[a-z0-9]替換\ w應該可以工作。我正在接受您的答案。感謝您的回覆。 – user1290793 2012-04-21 15:49:30

相關問題