【问题标题】:What is the reason for the differences in how this string is split?这个字符串的拆分方式不同的原因是什么?
【发布时间】:2017-02-07 23:43:47
【问题描述】:

我正在使用str.split() 方法,我可以确定导致结果差异的原因,但我不明白为什么会这样。

>>> dummy_line = "Line1 \nLine2 \nLine3"
>>> print(dummy_line.split())
['Line1', 'Line2', 'Line3']

>>> print(str.split(" "))
['Line1', '\nLine2', '\nLine3']

为什么在第二个实例中将分割分隔符定义为" " 会导致返回的行包含换行符\n

【问题讨论】:

  • .splitwhitespace 上没有参数拆分,而在第二个示例中,您仅在 单个空格 上拆分。
  • @juanpa.arrivillaga:这更像是一个答案而不是评论。

标签: python string methods


【解决方案1】:

str.split(" ") 用一个空格分隔。因此会保留换行符。

str.split() 打破所有空白。 (\s, \r, \n, \t)

也许你的误解是 Python 对默认函数参数的支持?

提示:试试dummy_line = "Line 1\nLine 2"

【讨论】:

  • 更具体地说,str.split(' ') 仅分隔一个空格,而 str.split() 分隔 1 个或多个空格。
  • 我不会将换行符或回车称为“一个或多个空格”
  • (1 个或多个空格或换行符,但我专注于答案的不精确部分)。这不是真的:“str.split(" ") 仅在空格上分隔。”它仅在 一个 空格上分隔,而不是在 空格 上分隔。
  • 如果我们想要更具体,这里直接来自str.split 文档字符串:“如果 sep 未指定或为无,则任何空白字符串都是分隔符”。换行符被视为空白字符。
  • @cricket_007 转义序列\s 表示什么?我曾尝试在 Python 中使用它,但它并没有做任何事情..
【解决方案2】:
  • split() - 为您去除所有空白字符 - 当然包括 '\n'
  • split(" ") - 为您删除一个空格。

【讨论】:

    猜你喜欢
    • 2012-05-24
    • 2014-02-22
    • 2012-03-26
    • 2013-05-02
    • 2016-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-06
    相关资源
    最近更新 更多