繁体   English   中英

Python 命令行 - 多行输入

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

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