【问题标题】:Split function with multiple delimiters such as ( and , [duplicate]具有多个分隔符的拆分函数,例如 ( 和 , [重复]
【发布时间】:2021-05-07 08:27:48
【问题描述】:

有人帮我处理拆分功能的多个分隔符吗? 例如,给定一个字符串"#1(X,Y)",我想使用(, ',', ) 之类的分隔符来获得('#1', 'X', 'Y') 之类的集合

我试过re.split(' \\( | , | \\) ', '#1(X,Y)') 但得到 ['#1', 'X, Y', '']

【问题讨论】:

  • 您可以使用.replace() 替换并为每个分隔符执行此操作并替换为逗号或某物,然后您可以只用逗号分割
  • 如果您想按(,) 进行拆分,那么这听起来像是'[(),]' 这样的表达式。我不知道你问题中的那个表达应该是什么。

标签: python regex


【解决方案1】:

你的例子没有按照你说的做。

>>> s = "#1(X,Y)" 
>>> import re
>>> re.split(' \\( | , | \\) ', s)
['#1(X,Y)']

您的字符串不包含任何这些表达式;你可能是说

>>> re.split('\\(|,|\\)', s)
['#1', 'X', 'Y', '']

可以重构为类似

>>> re.split(r'\s*[(,)]\s*', s)
['#1', 'X', 'Y', '']

使用更简单、更优雅和惯用的正则表达式,并允许在分隔符周围使用可选的空格。

没有任何合理的方法可以真正阻止 Python 在与字符串开头或结尾相邻的分隔符之前或之后找到空字符串;可能只是从开头和结尾过滤掉空字符串,或者预处理字符串以在正则表达式匹配之前从开头和结尾删除分隔符。

【讨论】:

  • 但是,您的输入字符串看起来有点像您实际上正在尝试解析表达式,这可能应该使用解析器。如果您需要处理例如,Regex 将失败。嵌套括号。
猜你喜欢
  • 2021-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多