python - 如何在多个定界符上拆分一个字符串但只捕获一些?

标签 python regex

我想根据我提供的分隔符的任意组合拆分字符串。例如,如果字符串是:

s = 'This, I think,., کباب MAKES , some sense '

分隔符是\.\s。但是我想捕获除空格 \s 之外的所有定界符。输出应该是:

['This', ',', 'I', 'think', ',.,', 'کباب', 'MAKES', ',', 'some', 'sense']

到目前为止,我的解决方案是使用 re 模块:

pattern = '([\.,\s]+)'  
re.split(pattern, s)

但是,这也会捕获空白。我尝试过使用其他模式,例如 [(\.)(,)\s]+ 但它们不起作用。

编辑:@PadraicCunningham 进行了敏锐的观察。对于像 Some text ,. 这样的分隔符。 ,更多文本,我只想从中删除前导和尾随空格,。 , 而不是空格。

最佳答案

我想下面的方法是最简单的方法......

s = 'This, I think,., کباب MAKES , some sense '
pattern = '([\.,\s]+)'
splitted = [i.strip() for i in re.split(pattern, s) if i.strip()]

输出:

['This', ',', 'I', 'think', ',.,', 'کباب', 'MAKES', ',', 'some', 'sense']

关于python - 如何在多个定界符上拆分一个字符串但只捕获一些?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39691091/

相关文章:

python - 关闭 Tornado 中的所有(保持事件)套接字连接?

python - 优化从数据帧中提取列表以在 Python 中创建新变量

python - MLT 多媒体框架的 Python 绑定(bind)文档

java - 正则表达式将文本分成 6 列

regex - 用于计算字符串长度是否大于 16 且小于 13

python - 验证 django.contrib.comments 表单时如何访问请求对象?

python - 计算网格框中的点

c# - 以逗号分隔的整数的正则表达式

javascript - 在 RegEx 中为一个组获取多个匹配项

python - 字符串与正则表达式匹配