繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM