【问题标题】:Confusion with string split method in python与python中的字符串拆分方法混淆
【发布时间】:2016-11-27 10:34:35
【问题描述】:

考虑以下示例

a= 'Apple'
b = a.split(',')
print(b)

输出是['Apple']

我不明白为什么即使 Apple 中没有 ',' 字符,它也会返回一个列表

当我们使用 split 方法时,我们可能会期望列表中有多个元素,但是由于我们基于字符串中不存在的分隔符进行拆分,所以只会有一个元素,如果这个错误会不会更好在此拆分方法本身期间被捕获

【问题讨论】:

  • 什么错误?如果在缺少的分隔符上拆分不是错误怎么办?如果分隔符是可选的怎么办?您可以更轻松地测试结果长度。
  • 而你想要发生什么?应该引发异常吗?
  • 这样做的好处是你总是知道你有一个列表,简化了后续处理。
  • @MartijnPieters 我原以为应该有一些例外,但在看到下面的答案后清楚地理解了这个概念

标签: python string split


【解决方案1】:

a.split(',')a 中没有逗号时的行为与a 中有正数逗号时的行为方式完全一致。

a.split(',') 表示将字符串a 拆分为由','a 中分隔的子字符串列表;分隔符不保留在子字符串中。

如果找到 1 个逗号,则在列表中获得 2 个子字符串,如果找到 2 个逗号,则在列表中获得 3 个子字符串,通常,如果找到 n 个逗号,则获得 列表中的 n+1 个子字符串。因此,如果找到 0 个逗号,您将在列表中获得 1 个子字符串。

如果您希望列表中有 0 个子字符串,那么您需要提供一个带有 -1 逗号的字符串。祝你好运。 :)

【讨论】:

    【解决方案2】:

    该方法的文档字符串说:

    返回字符串 S 中的单词列表,使用 sep 作为分隔符字符串。

    分隔符用于分隔字符串的多个部分;只有一个部分不是错误。

    【讨论】:

      【解决方案3】:

      split() 函数就是这样工作的。如果您不想要这种行为,您可以按如下方式实现您的 my_split() 函数:

      def my_split(s, d=' '):
          return s.split(d) if d in s else s
      

      【讨论】:

        猜你喜欢
        • 2014-04-15
        • 1970-01-01
        • 2010-11-02
        • 2011-03-14
        • 2018-02-04
        • 2016-05-25
        • 1970-01-01
        • 2013-09-17
        • 2013-06-13
        相关资源
        最近更新 更多