【发布时间】:2022-01-08 18:02:30
【问题描述】:
我有两个示例字符串,我想用“、”(如果 , 存在)或“”来分割它们。
x = ">Keratyna 5, egzon 2, Homo sapiens"
y = ">101m_A mol:protein length:154 MYOGLOBIN"
应该只执行一次拆分以恢复两条信息:
id, description = re.split(pattern, string, maxsplit=1)
对于">Keratyna 5, egzon 2, Homo sapiens" -> [">Keratyna 5", "egzon 2, Homo sapiens"]
对于">101m_A mol:protein length:154 MYOGLOBIN" -> [">101m_A", "mol:protein length:154 MYOGLOBIN"]
我想出了以下模式:
",\\s+|\\s+", ",\\s+|^,\\s+", "[,]\\s+|[^,]\\s+",
但这些都不起作用。
我做的解决方案是使用异常:
try:
id, description = re.split(",\s+", description, maxsplit=1)
except ValueError:
id, description = re.split("\s+", description, maxsplit=1)
但老实说,我讨厌这种解决方法。我还没有找到任何合适的正则表达式模式。我该怎么做?
【问题讨论】:
-
你试过
,?\s+吗? -
请不要用垃圾邮件标记不相关的语言标签。这是一种快速积累反对票的方法
-
是的,我试过了,?\s+,不幸的是不起作用。
-
使用
.split(",")以逗号分隔字符串。然后使用.strip(" ")清理生成的字符串以删除不需要的空格。 -
@HovercraftFullOfEels 抱歉,我想如果我的问题实际上是大多数编程语言都相同的正则表达式模式,我不仅可以使用 python 标签。感谢您指出这一点。