[英]Python command Line - multiple Line Input
我正在尝试解决 Python 中https://www.spoj.pl上的 Krypto 问题,其中涉及控制台输入。
我的问题是,输入字符串有多行,但在程序中需要作为一个字符串。 如果我只是使用 raw_input() 并在控制台中粘贴(用于测试)文本,Python 会威胁它,就像我在每行之后按 enter 一样 -> 我需要在循环中多次调用 raw_input()。
问题是,我不能以任何方式修改输入字符串,它没有任何标记结束的符号,我不知道有多少行。
那我该怎么办?
在输入到达 stream 的末尾时,raw_input 将返回一个空字符串。 因此,如果您确实需要累积整个输入(您可能应该避免给定 SPOJ 约束),那么请执行以下操作:
buffer = ''
while True:
line = raw_input()
if not line: break
buffer += line
# process input
由于raw_input()
旨在读取单行,因此您可能会遇到麻烦。 一个简单的解决方案是将输入字符串放在一个文本文件中并从那里解析。
假设你有input.txt你可以把值作为
f = open(r'input.txt','rU')
for line in f:
print line,
由于 Windows 上的行尾在 Unix 系统上被标记为“\r\n”或“\n”,因此可以直接使用
your_input.replace('\r\n', '')
在这里使用最佳答案,您仍然会遇到应该处理的 EOF 错误。 所以,我只是在这里添加了异常处理
buffer = ''
while True:
try:
line = raw_input()
except EOFError:
break
if not line:
break
buffer += line
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.