【问题标题】:Split string on whitespace in Python [duplicate]在Python中的空格上拆分字符串[重复]
【发布时间】:2011-12-28 03:58:16
【问题描述】:

我正在寻找相当于

的 Python
String str = "many   fancy word \nhello    \thi";
String whiteSpaceRegex = "\\s";
String[] words = str.split(whiteSpaceRegex);

["many", "fancy", "word", "hello", "hi"]

【问题讨论】:

    标签: python regex string split whitespace


    【解决方案1】:

    通过re 模块的另一种方法。它执行匹配所有单词的反向操作,而不是用空格吐出整个句子。

    >>> import re
    >>> s = "many   fancy word \nhello    \thi"
    >>> re.findall(r'\S+', s)
    ['many', 'fancy', 'word', 'hello', 'hi']
    

    上面的正则表达式将匹配一个或多个非空格字符。

    【讨论】:

      【解决方案2】:

      使用split() 将是最Pythonic 分割字符串的方式。

      记住,如果您在没有空格的字符串上使用split(),那么该字符串将以列表的形式返回给您,这也很有用。

      例子:

      >>> "ark".split()
      ['ark']
      

      【讨论】:

        【解决方案3】:
        import re
        s = "many   fancy word \nhello    \thi"
        re.split('\s+', s)
        

        【讨论】:

        • 这在行尾给了我一个空白标记。不知道为什么,原来的行甚至没有。也许这会忽略换行符?
        • @Gulzar 在最后做一个strip()
        • 请注意,如果性能有问题,这通常比 str.split 慢。
        【解决方案4】:

        没有参数的str.split() 方法在空格上拆分:

        >>> "many   fancy word \nhello    \thi".split()
        ['many', 'fancy', 'word', 'hello', 'hi']
        

        【讨论】:

        • 另外值得一提的是,如果您只想要第一个单词(这意味着将1 作为第二个参数传递),您可以使用None 作为第一个参数:s.split(None, 1)
        • 如果只想要第一个单词,使用str.partition
        • @yak :请您编辑您的评论。现在听起来的方式是 s.split(None, 1) 只会返回第一个单词。而是给出一个大小为 2 的列表。第一项是第一个单词,第二项是字符串的其余部分。 s.split(None, 1)[0] 只会返回第一个单词
        • @galois 不,它使用自定义实现(更快)。另请注意,它以不同方式处理前导和尾随空格。
        • @KishorPawar 我不清楚您要达到的目标。你想分割空格,但忽略单引号子字符串中的空格吗?如果是这样,您可以查看shlex.split(),这可能就是您要查找的内容。否则我建议提出一个新问题——你会得到一个更快、更详细的答案。
        猜你喜欢
        • 2014-02-15
        • 2015-05-12
        • 1970-01-01
        • 2012-10-16
        • 2011-01-17
        • 2015-11-26
        相关资源
        最近更新 更多