[英]Reading comma separated values in python until new blank line character
我想像这样从STDIN读取输入:
1,0
0,0
1,0
1,0
依此类推,直到新行为空(\\ n)。 这表示输入结束。
我做了这个
while (raw_input()!='\n'):
actual,predicted=raw_input().split(',')
当我在最后一个输入中输入“输入”时给了我这个错误
0,0
0,1
1,0
1,1
1,1
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-23-3ec5186ad531> in <module>()
5
6 while (raw_input()!='\n'):
----> 7 actual,predicted=raw_input().split(',')
8 if (actual==1 and predicted==1):
9 t_p+=50
ValueError: need more than 1 value to unpack
怎么了?
好的,这里有两个问题: raw_input删除尾随的换行符,因此空白输入变为空字符串,而不是换行符。
更大的问题是raw_input使用了输入,因此您的代码将无法正常工作-仅处理第二行。 while循环调用raw_input(使用完一些输入并将其丢弃),然后循环主体再次调用它,并将其分配给实际的和预测的。
此任务的python习惯用法是while True:
包含break
循环:
while True:
line = raw_input()
if not line:
break
actual, predicted = line.split(",")
print("a, p", actual, predicted)
print("done!")
raw_input()
所以你要比较去除结尾的换行符, ''
。
但是您还需要在循环中一次读取两行,我想您需要的是更多类似内容:
data = raw_input()
while (data != ''):
actual,predicted=data.split(',')
data = raw_input()
编写用户交互程序时,实际上会使用raw_input
。 听起来您的程序是处理文件输入的更典型的UNIX程序。
sys.stdin
是一个打开的文件。 因此,您可以使用我最喜欢的Python功能,它在文件的每一行上进行迭代。 完全raw_input
,只将数据视为文件即可:
for line in sys.stdin:
line = line.strip()
parts = line.split(',')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.