在Python中使用多个分隔符拆分字符串

2024-04-19 01:19:30 发布

您现在位置: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- trimethyl quinoline [026780-96-1]') 

Tags: 字符串答案示例经验空格逗号bisstaged
3条回答

做一个str.replace('; ', ', '),然后做一个str.split(', ')

以下是使用正则表达式对任何iterable分隔符的安全方法:

>>> 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?"]

re.escape允许自动构建模式,并使分隔符顺利转义。

这是一个解决方案,作为您复印粘贴乐趣的函数:

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

如果要经常使用相同的分隔符进行拆分,请像前面描述的那样预先编译正则表达式并使用^{}

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

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

更新:
根据您的评论:

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

相关问题 更多 >