从行0到200读取文本文件,然后从400到600读取,然后在Python中读取800到1000

时间:2016-11-09 17:57:30

标签: python

我在Python中生成了一个txt文件,我想解析这个文件,检索200行数据组。我已经看到很多方法来解析txt文件,但是你不能像在JAVA中那样遍历行,例如:

for(int i = 0; i < 200, i++) 

然后通过撰写line[i] ...

来访问它

4 个答案:

答案 0 :(得分:3)

如果您不想将所有行存储在内存中,您可能需要使用以下内容:

lines = []
with open('file.txt') as f:
    for i in range(num_rows):
        if i % 400 > 200:
            next(f)
        else:
            line = f.readline()
            lines.append(line.strip())
print(lines)

这里我假设您知道文件中的行数。您可以修改代码并读取行直到文件末尾。

答案 1 :(得分:2)

有一个方法readlines(),它将读取所有文件并将其作为行列表返回,然后您可以通过索引访问它。

答案 2 :(得分:1)

您可以使用file.readlines()执行此操作:

basket_size, jump = 200, 200 

with open('file') as f:  # Open file
    file_content = f.readlines()  # list of all lines
    for i in range(0, len(file_content), basket_size+jump):
        for line in file_content[i:i+basket_size]:
            print line

下面:

  • basket_size :要打印的每个块的大小
  • :跳转后的大小

同时检查:Methods for File Objects

答案 3 :(得分:0)

使用file.read()。splitlines()将文件读入列表并删除换行符

with open(r'file.txt') as f:
    lines = f.read().splitlines()
    n=0
    for i in range(len(lines)): # replace range with xrange if use python 2
        if n<200: # needed data 200 lines
            print lines[i]
        elif n == 400-1: # 400 = 200 needed data + 200 skip unwanted data
            n=0 # reset count to 0
            continue
        n+=1

如果处理大文件,建议使用基于生成器的更高效,基于itertools islice方法修改

import sys
def slice_xx(iterable, chunk=200, step=200):
    it = iter(range(0, sys.maxint, chunk+step)) # replace range with xrange if use python 2
    nexti = next(it)
    for i, element in enumerate(iterable):
        if nexti <= i < nexti + chunk:
            yield element.rstrip() # perform newline strip off here
        if i == nexti+chunk:
            nexti = next(it)

with open(r'file.txt') as f:
    for i in slice_xx(f):
        print i