【发布时间】:2019-02-08 07:14:00
【问题描述】:
我有一个非常大的文件,其中包含如下行:
....
0.040027 a b c d e 12 34 56 78 90 12 34 56
0.050027 f g h i l 12 34 56 78 90 12 34 56
0.060027 a b c d e 12 34 56 78 90 12 34 56
0.070027 f g h i l 12 34 56 78 90 12 34 56
0.080027 a b c d e 12 34 56 78 90 12 34 56
0.090027 f g h i l 12 34 56 78 90 12 34 56
....
我需要以最快的方式拥有如下字典。
我使用以下代码:
ascFile = open('C:\\eample.txt', 'r', encoding='UTF-8')
tag1 = ' a b c d e '
tag2 = ' f g h i l '
tags = [tag1, tag2]
temp = {'k1':[], 'k2':[]}
key_tag = {'k1':tag1, 'k2':tag2 }
t1 = time.time()
for line in ascFile:
for path, tag in key_tag.items():
if tag in line:
columns = line.strip().split(tag, 1)
temp[path].append([columns[0], columns[-1].replace(' ', '')])
t2 = time.time()
print(t2-t1)
我在 6 秒内解析一个 360MB 的文件有以下结果,我想改进一下时间。
temp = {'k1':[['0.040027', '1234567890123456'], ['0.060027', '1234567890123456'], ['0.080027', '1234567890123456']], 'k2':[['0.050 ', '1234567890123456'], ['0.070027', '1234567890123456'], ['0.090027', '1234567890123456']] }
【问题讨论】:
-
您是否尝试过存储元组列表而不是列表列表?它们应该更轻量级,因此创建速度更快。