python input() 函数截断很长的输入

问题描述 投票:0回答:1

我正在编写一个编程挑战的解决方案,但我得到了错误的答案,但仅限于非常长的输入。问题似乎不是我的算法,而是 python 输入函数在达到一定长度(2^14 或略低于 16,384 个字符)后截断字符。我将文件中的 26,000 多个字符输入复制并粘贴到控制台,粘贴时会显示整个输入,但打印时仅读取前 16,381 个字符。

该挑战提供 2 个输入,每个输入长度超过 26,000 个字符。输入函数仅获取前 16,000 左右,然后切断其余部分。执行第二个 input() 不会获取剩余的字符,而是获取下一个输入。

在比赛中,我无法控制数据的提供方式 - 它作为控制台输入提供,因此文件读取将无法工作,除非有某种方法可以从控制台流读取文件读取。

如何在不安装任何额外的 python 库的情况下检索很长的输入?有没有什么东西可以让我将输入读取为类似于 java Scanner 的 next() 函数的单个单词?我不需要保存整个输入,我只需要一个字符一个字符地处理整个输入,并用它做一些数学运算,但如果我只能提取 60% 的输入,我就无法做到这一点。

line = input()
print(len(line))

为上述代码提供一次 26,000+ 个字符的输入(从某处复制并粘贴),打印结果的长度为 16,381 个字符。

python input limit
1个回答
1
投票

您的数据几乎肯定包含一个(或多个)换行符。

input() 读取并排除第一个换行符。

您可以按如下方式从标准输入流读取数据:

import sys

data = sys.stdin.read()
print(len(data))

以这种方式使用输入不受换行符影响 - 即,它在 EOF 处停止

注:

这种技术不太适合交互式输入

© www.soinside.com 2019 - 2024. All rights reserved.