为了账号安全,请及时绑定邮箱和手机立即绑定

Python中带有多个分隔符的拆分字符串

Python中带有多个分隔符的拆分字符串

梵蒂冈之花 2019-06-21 17:08:09
Python中带有多个分隔符的拆分字符串我在网上找到了一些答案,但我对正则表达式没有经验,我认为这是这里所需要的。我有一个字符串,需要用‘;’或‘来分隔,也就是说,它必须是分号或逗号,后面跟着空格。没有尾随空格的个别逗号应保持不变。示例字符串:"b-staged divinylsiloxane-bis-benzocyclobutene [124221-30-3], mesitylene [000108-67-8]; polymerized 1,2-dihydro-2,2,4- trimethyl  quinoline [026780-96-1]"应拆分为包含以下内容的列表:('b-staged divinylsiloxane-bis-benzocyclobutene [124221-30-3]' , 'mesitylene [000108-67-8]', 'polymerized 1,2-dihydro-2,2,4- trime thyl quinoline [026780-96-1]')
查看完整描述

3 回答

?
侃侃无极

TA贡献2051条经验 获得超10个赞

幸运的是,Python有这个内置的:)

import re
re.split('; |, ',str)

最新情况:
以下是你的评论:

>>> a='Beautiful, is; better*than\nugly'>>> import re>>> re.split('; |, |\*|\n',a)['Beautiful', 'is', 'better', 'than', 'ugly']


查看完整回答
反对 回复 2019-06-21
?
慕的地10843

TA贡献1785条经验 获得超8个赞

str.replace('; ', ', ')然后str.split(', ')


查看完整回答
反对 回复 2019-06-21
?
智慧大石

TA贡献1946条经验 获得超3个赞

对于任何可迭代的分隔符,以下是使用正则表达式的安全方法:

>>> import re>>> delimiters = "a", "...", "(c)">>> example = "stackoverflow (c) is awesome... isn't it?"
>>> regexPattern = '|'.join(map(re.escape, delimiters))>>> regexPattern'a|\\.\\.\\.|\\(c\\)'
>>> re.split(regexPattern, example)['st', 'ckoverflow ', ' is ', 'wesome', " isn't it?"]

重逃允许自动构建模式,并将分隔符很好地转义。

下面是一个用于复制粘贴乐趣的解决方案:

def split(delimiters, string, maxsplit=0):
    import re
    regexPattern = '|'.join(map(re.escape, delimiters))
    return re.split(regexPattern, string, maxsplit)

如果要经常使用相同的分隔符进行拆分,请像前面所描述的那样编译正则表达式并使用RegexObject.split.


查看完整回答
反对 回复 2019-06-21
  • 3 回答
  • 0 关注
  • 1334 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信