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')看看我是否能算出来为什么它将每个元素分成单个字符。我也试过每行使用两个单独的单词输入,并得到类似的输出。
所以,我的问题是:为什么在每个角色之后而不是在空格上分裂?
答案 0 :(得分:1)
for line in sys.stdin.read() :
sys.stdin
是输入流。通过使用read()
,您可以将输入作为字符串读取。迭代字符串会产生单个字符,而不是行。所以line
是一个字符。这解释了split
无效/无效。
修复只是在stdin
上进行迭代,逐行产生:
for line in sys.stdin:
numbers = line.split()
print numbers