【发布时间】:2020-05-05 00:08:52
【问题描述】:
简而言之,我正在尝试从文本文件中“提取”某些行(字符串)。但还有更多。
我有一个相当大的文本文件(100,000 行,60 MB)。有些数据很重要,有些则不重要。有数百个这样的块。没有规律,一个停止的地方,下一个不一定开始。
我已经解析了文件以确定哪些行是我感兴趣的。现在,我有一个字典,其中包含“开始”行号作为键,然后将所需的连续行数作为值。这里:
paired_points =
{51: 7,
69: 67,
...
870623: 1730,
872364: 1801}
len(paired_points) =
783
我可以将其转换为明确的“开始”和“停止”整数(例如,51 -> 58、69 -> 136 等),但这仍然对我没有帮助。
我正在尝试使用 itertools 中的 islice,但它返回了一个 islice 对象列表。
from itertools import islice
file = r'575852.roi'
f = open(file, "r")
a = list()
for key in paired_points:
with open(file) as f:
try:
a.append(islice(f, key, key + int(paired_points[key]))) # Start and stop lines
这在概念上有效 - 但我需要将 islice 对象转换为字符串。我的意思是,我正在寻找文本文件中的行(字符串)列表。
任何帮助将不胜感激。提前谢谢你!
【问题讨论】:
-
为什么不直接阅读所有要列出的行,然后执行
lines[start:end]来获取您的零件?
标签: python file parsing text itertools