我有一个大文件,我将在其中解析大约1.9E8行。你知道吗
在每次迭代过程中,我将创建一个临时字典发送给另一个方法,它将提供我想要的输出。你知道吗
由于文件太大,我无法用readlines()方法打开它。你知道吗
所以我最后的办法就是在解析过程中加快速度。你知道吗
我已经有两个生成字典的选项了。optionB的性能比optionA好,我知道我可以试试regex,不过我不太熟悉。如果有更好的选择,我愿意接受。你知道吗
预期输入:"A@1:100;2:240;...:.."
输入可能更长,它可以有更多的组和它们的频率
def optionA(line):
_id, info = line.split("@")
data = {}
for g_info in info.split(";"):
k, v = g_info.split(":")
data[k] = v
return data
def optionB(line):
_id, info = line.split("@")
return dict(map(lambda i: i.split(":"), info.split(";")))
预期输出:{'1': '100', '2': '240'}
我愿意接受任何建议!你知道吗
正则表达式解析行的快速示例:
以下是一些时间安排:
次数:
编辑:随着需求的轻微变化,我尝试了
findall
的optionC
和optionA
的稍微不同的版本:时间安排:
所以看起来修改后的
optionAA
在这一行中获胜。希望这能说明测量算法的重要性。我很惊讶findall
的速度慢了。你知道吗下面是一个使用编译的regexp来匹配您的模式的简单示例。你知道吗
输出为:
相关问题 更多 >
编程相关推荐