2011-05-05 39 views
4

如何通過撇號拆分字符串'-Python:split string by'和 -

例如,給定string = "pete - he's a boy"

+1

'[item.split( 「'」)在string.split項目(' - ')]'是我想出來的,並不是真的答案,但... – 2011-05-05 07:56:06

+1

http://stackoverflow.com/questions/1059559/python-strings-split-with-multiple-separators – ninjagecko 2011-05-05 07:58:30

+0

什麼是您的預期輸出? – NullUserException 2011-05-05 07:58:51

回答

15

您可以使用正則表達式模塊的分割功能:

re.split("['-]", "pete - he's a boy") 
+0

第一個合適的答案,做得很好+ 1 – 2011-05-05 07:59:15

+0

@Jakob Bowyer - 請讓OP告訴我們什麼是「合適的答案」...讓自己走在前面? ;) – viraptor 2011-05-05 08:02:37

+1

不工作,你需要逃避像下面的一個答案字符= P – fceruti 2011-05-05 08:03:00

0
>>> import re 
>>> string = "pete - he's a boy" 
>>> re.split('[\'\-]', string) 
['pete ', ' he', 's a boy'] 

希望這有助於:)

+0

這可能是一個想法,首先檢查其他人的答案。 @Uwe已經提供了一個合適的重新表達。 – 2011-05-05 08:02:35

+0

很抱歉,我寫的時候說沒人發佈。但無論如何,他們的答案是錯誤的。 – fceruti 2011-05-05 08:04:35

+0

沒有錯誤。 – 2011-05-05 08:09:13

5
string = "pete - he's a boy" 
result = string.replace("'", "-").split("-") 
print result 

['pete ', ' he', 's a boy'] 
+0

我的想法確切。 – zeekay 2011-05-05 08:02:18

+0

這是一個可愛的工作方式。 – 2011-05-05 08:02:46

+1

任何事情要避免使用正則表達式; D – zeekay 2011-05-05 08:05:06

1

這種感覺那種哈克但你可以這樣做:

string.replace("-", "'").split("'") 
+0

等效於[稍早的答案](http://stackoverflow.com/questions/5894392/python-split-string-by-and/5894465#5894465) – 2011-05-05 08:14:54

1

使用上串分割方法(以及應用列表解析 - 有效相同@賽德里克連的溶液)

首先分裂一次,然後拆分該陣列的每個元素

l = [x.split("'") for x in "pete - he's a boy".split('-')] 

然後flattern此列出

print ([item for m in l for item in m ]) 

給 [ '彼得', '他', 'SA男孩']

0
import re 
string = "pete - he's a boy" 
print re.findall("[^'-]+",string) 

結果

['pete ', ' he', 's a boy'] 

,如果你之前也不劈裂後的每個項目後想沒有空白:

import re 
string = "pete - he's a boy" 
print re.findall("[^'-]+",string) 
print re.findall("(?!)[^'-]+(?<!)",string) 

結果

['pete', 'he', 's a boy']