【问题标题】:Split in Python在 Python 中拆分
【发布时间】:2012-09-23 17:35:16
【问题描述】:

我有一个关于我正在阅读的字符串以及基于分隔符将其拆分并将其存储在列表中的问题。

我有这个输入 1.2.3.4。在哪里。是分隔符。 现在,当我使用拆分时,最后会得到这个字符“”。这是什么角色?

for element in data.split('.'):
    L.append(element)   
    print L  #prints out ["1","2","3","4",""] 

我的问题是最后一个数组元素“”是什么?我想摆脱这个元素不仅在这个数组中,而且在字符串数据中。 我尝试使用element.rstrip(element),但它并没有摆脱它。我认为我的大部分困惑来自python中的“”指的是什么。 我也尝试使用L.remove(""),但这似乎不起作用。

【问题讨论】:

  • 为什么这个问题有一个numpy标签?

标签: python string split


【解决方案1】:

您要求 Python 将 "1.2.3.4." 拆分为 "."。在最后一个 . 之后没有任何内容,因此您的列表中有一个空元素。

防止这种情况的最简单方法是在拆分之前将其剥离。

L = data.strip(".").split(".")

(当您已经有一个列表时,我不确定您为什么要遍历该列表并从中构建另一个列表。)

【讨论】:

    【解决方案2】:

    使用strip() 删除最后一个.data.strip(".") 会这样做,或者只是rstrip("."),如果您只想删除右侧的.

    In [35]: "1.2.3.4.".strip(".")
    Out[35]: '1.2.3.4'
    In [36]: "1.2.3.4.".strip(".").split(".")
    Out[36]: ['1', '2', '3', '4']
    

    【讨论】:

      【解决方案3】:

      正如其他人已经写的那样,您的最后一个结果中没有字符。 "" 是空字符串。 split() 将在 所有 个分隔符出现处拆分,并且由于在最后一个分隔符之后没有任何内容,因此您会在结果中得到(什么都没有)。

      我建议您编写代码以预期并丢弃空元素,而不是从您的号码中删除尾随点(这需要您知道 是尾随点):

      for element in data.split('.'):
          if element:
              L.append(element) 
      

      如果字符串中间有两个分隔符,这也会跳过空元素,如"1.2..3."

      顺便说一句,您不需要循环。只需分配拆分的结果,或使用列表推导删除空元素:

      L = data.split('.')                           # all parts: equivalent to your code
      L = [ elt for elt in data.split('.') if elt ] # non-empty parts only
      

      【讨论】:

        【解决方案4】:

        你得到是因为尾随点。尝试,在拆分之前:

        L = L[:-1]
        

        例如:

        >>> a = "1.2.3.4."
        >>> b = a.split('.')
        >>> b
        ['1', '2', '3', '4', '']
        >>> b = a[:-1]
        >>> b.split('.')
        ['1', '2', '3', '4']
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-11-02
          • 2021-10-07
          • 2017-06-13
          • 2019-03-06
          • 2013-02-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多