在python中读取逗号分隔的值直到新的空行字符

在python中读取逗号分隔的值直到新的空行字符,python,Python,我想从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 --------------------------------------------------------------------------- ValueE

我想从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\u输入会将尾随的换行符去掉,因此您希望与进行比较

但你也在循环中一次读两行,我想你想要的是:

data = raw_input()
while (data != ''):
    actual,predicted=data.split(',')
    data = raw_input()
在编写用户交互程序时,真正使用的是原始输入。听起来您的程序是一个处理文件输入的更典型的UNIX程序

sys.stdin是一个打开的文件。因此,您可以使用我最喜欢的Python特性,即迭代文件中的每一行。完全放弃原始输入,将数据当作文件处理:

for line in sys.stdin:
    line = line.strip()
    parts = line.split(',')

好的,这里有两个问题:去掉尾随的换行符,所以空白输入变成空字符串,而不是换行符

更大的问题是,原始输入会消耗输入,因此您的代码无法正常工作-它只会每隔一行处理一次。while循环调用raw_输入,该输入使用完一些输入并丢弃它,然后循环体再次调用它并将其分配给实际和预测

此任务的python习惯用法是while True:loop,其中包含一个中断:


不,我正在从用户处获取输入。标准输入在将一个程序的输出传输到另一个程序的输入时也非常常用。例如,cat/etc/passwd | grep rootHi@Tom。这是好的和有效的。但我还有一个小错误。请检查编辑。不要问这样一系列的问题。问一个新问题,和这里问的代码一样。否则,新的问题将需要提出新的问题information@JonathonReinhart你应该问一个新问题是对的。这不是同一个代码,如果人们在这里回答你的新问题,答案将与这个问题的标题无关。此外,您还应该赞扬TomMcDermott在不要求他继续解决原始问题的情况下为您提供的帮助。在任何情况下,您的新问题是split会给您字符串,然后您将这些字符串与整数进行比较。比较前转换为整数,或比较为1和0。
while True:
    line = raw_input()
    if not line:
        break
    actual, predicted = line.split(",")
    print("a, p", actual, predicted)
print("done!")