【问题标题】:How can I avoid those empty strings caused by preceding or trailing whitespaces?如何避免由前面或后面的空格引起的那些空字符串?
【发布时间】:2014-09-13 00:12:59
【问题描述】:
>>> import re
>>> re.split(r'[ "]+', '  a n" "c ')
['', 'a', 'n', 'c', '']

当有前后空格时,分割后会有空字符串。 我怎样才能避免那些空字符串?谢谢。

【问题讨论】:

    标签: python regex split


    【解决方案1】:

    空值是拆分之间的东西。 re.split() 不是适合这项工作的工具。

    我建议匹配你想要的。

    >>> re.findall(r'[^ "]+', '  a n" "c ')
    ['a', 'n', 'c']
    

    如果你必须使用拆分,你可以使用列表推导并直接过滤它。

    >>> [x for x in re.split(r'[ "]+', '  a n" "c ') if x != '']
    ['a', 'n', 'c']
    

    【讨论】:

      【解决方案2】:

      这就是re.split 应该做的。您要求它在任何空格或引号的运行中拆分字符串;如果它在开始时没有返回空字符串,您将无法区分该情况与前面没有空格的情况。

      如果您实际要求的是查找所有非空白或引号字符的运行,只需写下:

      >>> re.findall(r'[^ "]+', '  a n" "c ')
      ['a', 'n', 'c']
      

      【讨论】:

        【解决方案3】:

        我喜欢 abarnert 解决方案。

        但是,您也可以这样做(也许不是 Python 的方式):

        myString.strip()
        

        在您的split(或其他)之前。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-10-18
          • 1970-01-01
          • 1970-01-01
          • 2020-08-16
          • 1970-01-01
          相关资源
          最近更新 更多