【问题标题】:Python split by newlinePython按换行符拆分
【发布时间】:2015-09-21 03:08:39
【问题描述】:

我无法通过换行符将字符串拆分为列表。我的代码:

i=raw_input().split("\n")

.split() 会按照我的想法做吗?如果是这样,我如何让它合作?

这也是我的意见:

>>>>>>v
^     v
^     >>>>X

【问题讨论】:

    标签: python python-2.7 split newline


    【解决方案1】:

    the documentation -中所述

    raw_input([提示])

    如果提示参数存在,则将其写入标准输出,不带尾随换行符。 然后该函数从输入中读取一行,将其转换为字符串(去除尾随的换行符),然后返回。读取 EOF 时,会引发 EOFError。

    它从输入中读取一行。如果要从输入中读取三行,则必须使用三个 raw_input() ,您可以读取三个 raw_input() 并将它们附加到 list 。示例 -

    lst = [raw_input(), raw_input(), raw_input()]
    

    演示 -

    >>> lst = [raw_input(), raw_input(), raw_input()]
    1
    2
    3
    >>> lst
    ['1', '2', '3']
    

    如果您从文件或其他地方重定向标准输入,正如@KevinGuan 在 cmets 中提到的,您还可以使用 sys.stdin.read() 一次读取完整的输入,然后对其进行拆分。示例 -

    import sys
    x = sys.stdin.read()
    print(x.split('\n'))
    

    一个示例文本文件 -

    Blah
    Blah1
    blah2
    

    结果 -

    python a.py < a.txt
    ['Blah', 'Blah1', 'blah2']
    

    但请注意,如果您是从文件重定向,我宁愿使用open() 在 python 本身中读取文件。

    【讨论】:

    • 是的,可能,我已将其添加到我的答案中,但如果它是从文件重定向的,我宁愿使用 open()
    • 好吧,我的新答案没用吗?
    • 不,你可以保留它。我赞成它,它也是一个很好的答案。
    【解决方案2】:

    我想你想用sys.stdin.read():

    import sys
    data = sys.stdin.read()
    data_list = data.strip().split('\n')
    
    print data_list
    

    输出:

    # here is the input:
    >>>>>>v
    ^     v
    ^     >>>>X
    
    # then press Ctrl+D on Linux, or Ctrl+Z on Windows
    ['>>>>>>v', '^     v', '^     >>>>X']
    

    【讨论】:

    【解决方案3】:

    使用您的示例输入将文件中的行读入 Python list

    import fileinput
    
    lines = [line.strip() for line in fileinput.input('input.txt')]
    

    输出:

    >>> lines
    ['>>>>>>v', '^     v', '^     >>>>X']
    

    【讨论】:

      猜你喜欢
      • 2013-01-25
      • 1970-01-01
      • 1970-01-01
      • 2012-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-24
      • 1970-01-01
      相关资源
      最近更新 更多