【问题标题】:what does this statement (line, str) = str.split("\n", 1) mean?这个语句 (line, str) = str.split("\n", 1) 是什么意思?
【发布时间】:2016-12-03 21:37:02
【问题描述】:

我熟悉split 函数,我会这样使用它:

str = "Line1-abcdef \nLine2-abc \nLine4-abcd"
print str.split( )

上面会返回这个:

['Line1-abcdef', 'Line2-abc', 'Line4-abcd']

简单易行。但是,我遇到了一段代码,其中包含以下语句:

(line, str) = str.split("\n", 1)

这里有两点我不明白:

  1. split 的第二个参数及其作用。我看了here,上面写着行数。这是什么意思?

  2. split 返回一个可迭代向量。为什么分配给(line, str)? (line, str) 在这里是什么意思?

【问题讨论】:

  • 如果你好奇,何不试试呢?
  • 仔细阅读你指出的文档,特别是例子,你会明白的。
  • 查看 here 了解拆分的工作原理。
  • @Bakuriu 谢谢你能把它作为答案

标签: python string iterable


【解决方案1】:

第二个参数maxsplit=1表示遇到分隔符\n一次后停止分裂。

因此你只有两部分,你的行和字符串的其余部分。


例如:

str = 'This is one line\nThis is a second line\nThis is a third line'
(line, str) = str.split('\n', 1)
print(line)
# 'This is one line'
print(str)
# 'This is a second line\nThis is a third line'

【讨论】:

  • 很遗憾,在python2中,maxsplit参数不能通过关键字传递。这在 python3 中已修复,您可以编写 str.split('\n', maxsplit=1) 并使代码更加自我记录。
【解决方案2】:

使用基本字符串how do you do ? 进行测试。 line 将获得拆分的第一个元素,str 将获得其余的(因为我们只拆分一次)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-26
    • 2012-01-05
    • 2021-12-25
    • 2014-03-30
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 2014-10-31
    相关资源
    最近更新 更多