2015-11-05 66 views
1

我認爲這個問題看起來很愚蠢,但我似乎無法讓它工作。如何將正則表達式併入Python string.split方法?下面是一些示例代碼:如何在Python中使用正則表達式分割字符串

ip = '192.168.0.1:8080' 
tokens = ip.split('[.|:]') 
print tokens 

這出於某種原因產生['192.168.0.1:8080']。有人能指出我錯過了什麼嗎?我嘗試過轉義字符並使用雙引號,但似乎沒有任何改變。

回答

4

如果您想根據正則表達式模式分割字符串,則需要使用re.split

tokens = re.split(r'[.:]', ip) 

在字符類|相匹配的文字符號|並注意[.:]冒號(|不會做orring這裏)相匹配。

所以你需要從字符類中刪除|,否則它會根據管道字符進行拆分。

使用string.splitlist_comprehension一起。

>>> ip = '192.168.0.1:8080' 
>>> [j for i in ip.split(':') for j in i.split('.')] 
['192', '168', '0', '1', '8080'] 
+1

''re.split''比'string.split' IIRC昂貴得多。如果你知道你的字符串將會是帶有端口的IP地址,那麼執行'temp = ip.split(':')'然後'tokens = temp [1] .split('。')'或者那麼'tokens.append(ip [1])' – personjerry

+0

增加lc方式...... –

相關問題