试图在python中的stdin上使用split()

时间:2017-11-04 16:09:31

标签: python split

import sys
for line in sys.stdin.read() :
    numbers = line.split()
    print numbers

我一直试图弄清楚当我在python中使用split()时发生了什么。根据我读过的内容,没有参数,它会在空格上分割,并将该行拆分为字符串列表。 当我运行这个(微小的)代码片段(使用它来试图找出更大的程序中出现的问题)时输入类似于

1 100
2 32
3 76

我明白了:

['1']
[]
['1']
['0']
['0']
[]
['2']
[]
['3']
['2']
[]
['3']
[]
['7']
['6']
[]

我在split()中尝试了几个参数,包括(''),没有参数以及(' \ n')看看我是否能算出来为什么它将每个元素分成单个字符。我也试过每行使用两个单独的单词输入,并得到类似的输出。

所以,我的问题是:为什么在每个角色之后而不是在空格上分裂?

1 个答案:

答案 0 :(得分:1)

for line in sys.stdin.read() :

sys.stdin是输入流。通过使用read(),您可以将输入作为字符串读取。迭代字符串会产生单个字符,而不是行。所以line是一个字符。这解释了split无效/无效。

修复只是在stdin上进行迭代,逐行产生:

for line in sys.stdin:
    numbers = line.split()
    print numbers