我正在尝试在Python中https://www.spoj.pl解决Krypto问题,这涉及控制台输入。
我的问题是,输入字符串有多行但在程序中需要作为一个单独的字符串。 如果我只是使用raw_input()并粘贴(用于测试)控制台中的文本,那么Python威胁就像我在每一行后按Enter键一样 - >我需要在循环中多次调用raw_input()。
问题是,我无法以任何方式修改输入字符串,它没有任何标记结束的符号,我不知道有多少行。
那我该怎么办?
答案 0 :(得分:6)
在输入时到达流的末尾,raw_input将返回一个空字符串。因此,如果你真的需要积累整个输入(你可能应该避免给定SPOJ约束),那么:
buffer = ''
while True:
line = raw_input()
if not line: break
buffer += line
# process input
答案 1 :(得分:1)
由于Windows上的行尾在Unix系统上标记为'\ r \ n'或'\ n',因此可以直接使用
替换这些字符串your_input.replace('\ r \ n','')
答案 2 :(得分:1)
由于raw_input()
旨在读取一行,因此您可能会遇到此问题。
一个简单的解决方案是将输入字符串放在文本文件中并从那里进行解析。
假设您有 input.txt ,则可以将值设为
f = open(r'input.txt','rU')
for line in f:
print line,
答案 3 :(得分:0)
使用此处的最佳答案,您仍然会遇到应该处理的EOF错误。所以,我刚刚在这里添加了异常处理
buffer = ''
while True:
try:
line = raw_input()
except EOFError:
break
if not line:
break
buffer += line