如何在Python中存储txt文件中的前N个字符串?

时间:2018-03-08 00:20:31

标签: python

我正在试图弄清楚如何从txt文件中获取前N个字符串,并将它们存储到数组中。现在,我有代码从txt文件中获取每个字符串,用空格分隔符分隔,并将其存储到数组中。但是,我希望只能从中获取前N个字符串,而不是每个字符串。这是我的代码(我从命令提示符处执行):

import sys
f = open(sys.argv[1], "r")
contents = f.read().split(' ')
f.close()

我确信我需要解决的唯一问题是:

contents = f.read().split(' ')

我只是不确定如何将它限制为N个字符串。

4 个答案:

答案 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]

输出将包含输入

中的前三个字符串