我在Python中生成了一个txt文件,我想解析这个文件,检索200行数据组。我已经看到很多方法来解析txt文件,但是你不能像在JAVA中那样遍历行,例如:
for(int i = 0; i < 200, i++)
然后通过撰写line[i] ...
?
答案 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
下面:
答案 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