readline()读取所有数据,包括' \ n'

时间:2014-03-28 08:25:13

标签: python input

import sys

n = int(sys.stdin.readline())

for _ in range(n):
   s = input()
   print(s)

这是我在Python3.3中的代码。

我遇到输入问题。

如果我逐个输入我的输入 第一个'3'和第一个字符串和第二个字符串和第三个字符串。

没有问题。但是当我复制所有输入数据并粘贴它时,readline()函数会读取所有数据。我以为它会一直读到'\ n',

但它没有用。

以下是错误消息:

Traceback (most recent call last):
  File "D:/Users/SUUSER/Desktop/a.py", line 3, in <module>
    n = int(sys.stdin.readline())
ValueError: invalid literal for int() with base 10: '3\nasd\nfre\n345\n'
'3\nasd\nfre\n345\n' 

它读取(n)

的所有数据

但我只想阅读3。

我怎么能得到它?

2 个答案:

答案 0 :(得分:0)

这看起来像一个平台问题。看来你的终端,Python解释器和粘贴源在行尾是不一致的;通过"D:"在路径中的存在,我猜它是一个Windows平台,其中换行符传统上存储为'\r\n'并输入为'\r'(回车)。 Python遵循将新行处理为'\n'(换行)的C / Unix传统。使用终端处理和剪贴板内容的错误组合,'\n'字符将像任何其他字符一样传递,而不是结束一行。您可以尝试手动输入换行样式;回车符是Ctrl + M,换行符是Ctrl + J. Python也有support for different newline styles;我的猜测是,在您的特定终端中,sys.stdin会以'\r'个换行符打开。

答案 1 :(得分:0)

int无法将\ n转换为int值。

>>> print int('9\n')
9
>>> 
>>> print int('9\n3')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '9\n3'

删除sys.stdin.readline(),如下面的代码:

import sys

n = 5 #length
for _ in range(n):
   s = input()
   print(int(s))