Python:用'和 - [重复]分割字符串

Posted

技术标签:

【中文标题】Python:用\'和 - [重复]分割字符串【英文标题】:Python : split string by ' and - [duplicate]Python:用'和 - [重复]分割字符串 【发布时间】:2011-08-19 03:50:07 【问题描述】:

如何用撇号'- 分割字符串?

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

【问题讨论】:

[item.split("'") for item in string.split('-')] 是我想出的,虽然不是真正的答案...... ***.com/questions/1059559/… 你的预期输出是什么? 这项工作:re.split('\W+',string) 使用'\W+' 在这里有效,但总的来说它是错误的。请注意r'\W+' 更健壮,请参阅documentation about string literals 【参考方案1】:

可以使用正则表达式模块的拆分功能:

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

【讨论】:

第一个合适的答案,干得好+1 @Jakob Bowyer - 请让 OP 告诉我们什么是“合适的答案”......超越自己? ;) 那行不通,你需要像下面的一个答案一样转义字符=P 它确实有效!我刚刚在 2.6.6 上测试过【参考方案2】:
string = "pete - he's a boy"
result = string.replace("'", "-").split("-")
print result

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

【讨论】:

这是一个可爱的解决方法。 避免使用正则表达式的任何事情 ;D 工作正常。我想这取决于要拆分的字符串的大小,如果这个更快或 re.split 方法。 它们很有用。适度。 干净高效!!!【参考方案3】:

这感觉有点老套,但你可以这样做:

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

【讨论】:

相当于slightly earlier answer【参考方案4】:

这可以在没有正则表达式的情况下完成。对字符串使用 split 方法 ( 并使用列表推导 - 实际上与 @Cédric Julien's earlier answer 相同

第一次在一个拆分器上拆分一次,例如'-' 然后拆分数组的每个元素

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

然后扁平化列表

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

给予

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

【讨论】:

【参考方案5】:
>>> import re
>>> string = "pete - he's a boy"
>>> re.split('[\'\-]', string)
['pete ', ' he', 's a boy']

希望这会有所帮助:)

【讨论】:

首先检查其他人的答案可能是一个想法。 @Uwe 已经提供了合适的 re 表达式。 对不起,我写的时候说还没有人发帖。但无论如何,他们的回答是错误的。 注意我使用双引号作为模式参数,所以不需要引号。 哦,谢谢,现在我学到了一件事:)(双引号)【参考方案6】:
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']

【讨论】:

以上是关于Python:用'和 - [重复]分割字符串的主要内容,如果未能解决你的问题,请参考以下文章

Java用“^|^”分割字符串[重复]

Java正则表达式用逗号分割字符串,但忽略引号和括号[重复]

用换行符分割字符串[重复]

[Python图像处理] 四十.全网首发Python图像分割万字详解(阈值分割边缘分割纹理分割分水岭算法K-Means分割漫水填充分割区域定位)

Struts2 分割字符串标签s:generator

P2031 脑力达人之分割字串