根据正则表达式分割字符串

发布于 2021-01-29 19:32:53

我有表格形式的命令输出。我正在从结果文件中解析此输出,并将其存储在字符串中。一行中的每个元素都由一个或多个空格字符分隔,因此我正在使用正则表达式来匹配1个或多个空格并将其拆分。但是,每个元素之间都会插入一个空格:

>>> str1="a    b     c      d" # spaces are irregular
>>> str1
'a    b     c      d'
>>> str2=re.split("( )+", str1)
>>> str2
['a', ' ', 'b', ' ', 'c', ' ', 'd'] # 1 space element between!!!

有一个更好的方法吗?

每次拆分后都会str2添加到列表中。

关注者
0
被浏览
144
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    通过使用()您将捕获该组,如果仅删除它们,则不会出现此问题。

    >>> str1 = "a    b     c      d"
    >>> re.split(" +", str1)
    ['a', 'b', 'c', 'd']
    

    但是,不需要正则表达式,str.split没有指定任何定界符将为您将其分隔为空白。在这种情况下,这将是最好的方法。

    >>> str1.split()
    ['a', 'b', 'c', 'd']
    

    如果您真的想要正则表达式,则可以使用它('\s'代表空格,并且更清晰):

    >>> re.split("\s+", str1)
    ['a', 'b', 'c', 'd']
    

    或者您可以找到所有非空白字符

    >>> re.findall(r'\S+',str1)
    ['a', 'b', 'c', 'd']
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看