用于在所有空格处拆分的正则表达式 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 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

用于根据空格分隔符拆分文本的正则表达式 [重复]

R 使用 tidyr::separate 在最后一个空格字符处拆分字符串

正则表达式标点分割[Python]

正则表达式用于在不被单引号或双引号包围时使用空格分割字符串

正则表达式在第二个逗号处拆分

用于 CSV 拆分的正则表达式,包括多个双引号