2014-09-12 67 views
0

我想有替代隔膜呼籲string.split()用替代分離分割字符串

>>> import string 
>>> string.split('a n', ' ') 
['a', 'n'] 

這是正確的時候。

>>> string.split('a n"c', ' "') 
['a n"c'] 
>>> string.split('a n"c', '[ |"]') 
['a n"c'] 

理想的分割應該是['a', 'n', 'c']

>>> string.split('a n" "c', '[ |"]') 
['a n" "c'] 
>>> string.split('a n" "c', ' "') 
['a n"', 'c'] 

理想的分割應該是['a', 'n', 'c']

所以我想知道我該怎麼做?

+1

'string.split()'不推薦使用;你可以直接在字符串上調用該方法。 – 2014-09-12 21:59:18

+0

爲什麼不推薦使用?是不是很類似於C++? (這是很好的imho) – Tim 2014-09-12 21:59:44

+0

因爲''a b c'.split()'也可以;那些是'str'對象的方法。 – 2014-09-12 22:01:35

回答

3

str.split()不是那麼複雜;你想要的是re.split()代替:

re.split(r'[ "]+', some_string) 

演示:

>>> import re 
>>> re.split(r'[ "]+', 'a n" "c') 
['a', 'n', 'c'] 
+0

。當前面或後面的空格時,分割後會出現空字符串。例如,'re.split(r'[「] +','an''c')'會返回'['','a','n','c','']'。我避免那些空字符串? – Tim 2014-09-13 00:09:41

+0

@Tim:'re.findall(r'[^「] +','an'」c')'。 – 2014-09-13 04:10:51