我正在试图弄清楚如何从txt文件中获取前N个字符串,并将它们存储到数组中。现在,我有代码从txt文件中获取每个字符串,用空格分隔符分隔,并将其存储到数组中。但是,我希望只能从中获取前N个字符串,而不是每个字符串。这是我的代码(我从命令提示符处执行):
import sys
f = open(sys.argv[1], "r")
contents = f.read().split(' ')
f.close()
我确信我需要解决的唯一问题是:
contents = f.read().split(' ')
我只是不确定如何将它限制为N个字符串。
答案 0 :(得分:1)
如果文件真的很大,但不是太大 - 那就足够大了,你不想读取整个文件(特别是在文本模式或行列表中),但不是那么大你不能将它分页到内存中(这意味着在32位操作系统上低于2GB,但在64位上更多),你可以这样做:
~/Downloads/tools/emulator -list-avds # no output
显然你可以将各个步骤结合在一起,如果你愿意,甚至可以把整个东西塞进一个巨大的单行程中。 (一个惯用的版本将介于这个极端和这个极端之间。)
答案 1 :(得分:0)
如果你真的想在你到达第n个单词后立即停止阅读,那么你几乎必须一次读取一个字节。但那将是缓慢而复杂的。另外,它仍然不会真正在第n个单词之后停止读取,除非您正在以二进制模式读取并手动解码,并禁用缓冲。
只要文本文件有换行符(而不是一个巨大的80MB行),并且读取超过第n个字的几个字节是可以接受的,一个非常简单的解决方案仍然非常有效:只需读取和拆分逐行:
import sys
f = open(sys.argv[1], "r")
contents = []
for line in f:
contents += line.split()
if len(contents) >= n:
del contents[n:]
break
f.close()
答案 2 :(得分:0)
如果您对阅读整个文件感到满意(假设它不是内存禁止的话),您可以这样做:
strings_wanted = 5
strings = open('myfile').read().split()[:strings_wanted]
就是这样:
>>> s = 'this is a test string with more than five words.'
>>> s.split()[:5]
['this', 'is', 'a', 'test', 'string']
答案 3 :(得分:0)
只是:
output=input[:3]
输出将包含输入
中的前三个字符串