用于在所有空格处拆分的正则表达式 Python [重复]
Posted
技术标签:
【中文标题】用于在所有空格处拆分的正则表达式 Python [重复]【英文标题】:Regular expression Python for Splitting at all whitespaces [duplicate] 【发布时间】:2012-09-28 19:00:50 【问题描述】:可能重复:Split string on whitespace in python
我有一个这样的字符串:
['.text 0x1000 0xb51b 0xb600 6.259216 ']
我想把它拆分成这样:
[.text, 0x1000, 0xb51b... etc]
到目前为止,我已经尝试过: re.split("( )", b) 和 re.split("[ \t]", b)
但无济于事。我得到类似的东西:
.['.text', ' ', '0x1000', ' ', '0xb51b', ' ', '0xb600', ' ', '6.259216', ' ', '']
或其他一些有更多空格的。我知道我可以从字符串中删除空格,但我更愿意直接使用 RE 将它们拆分。
【问题讨论】:
【参考方案1】:为什么不直接使用普通的str.split
?
'.text 0x1000 0xb51b 0xb600 6.259216 '.split()
引用文档:
如果 sep 未指定或为 None,则应用不同的分割算法:连续的空格被视为单个分隔符,如果字符串有前导或尾随,结果将在开头或结尾不包含空字符串空格。
顺便说一句,我发现使用mystring.split(None)
(而不是mystring.split()
)有时是一件非常有用的事情,需要牢记,因为它允许您不“硬编码”拆分算法。
【讨论】:
因为空格的数量不同 @Shelby.S -- 没关系。 -- 试试看 :-) .split() 会考虑所有空格。这会工作 天哪……这真是天才!非常感谢! @Shelby.S -- 没问题。乐于助人。【参考方案2】:试试这个:
import re
re.split("\s*", yourInputString.strip()) # result as List
【讨论】:
【参考方案3】:另一种选择是先清除多个空格,然后用单个空格替换它们。之后,您使用一个空格执行split(" ")
:
re.sub(r" +"," ", text).split(" ")
【讨论】:
如果您可以使用str.split
一次性完成所有操作,您为什么还要使用它?我想如果你想确保你没有在"\t"
或其他东西上分裂......
当然,在这种情况下,使用re.split(' +',string_to_split)
会更容易
我同意你的看法。对于这个问题的特定目的,str.split
是最合适的。但是,如果您还有其他一些多字符出现,那么我的解决方案可能更通用。
你是对的......完全忘记了re.split
。以上是关于用于在所有空格处拆分的正则表达式 Python [重复]的主要内容,如果未能解决你的问题,请参考以下文章