Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将文本文件中的行读入python字典的最佳方法_Python_Dictionary - Fatal编程技术网

将文本文件中的行读入python字典的最佳方法

将文本文件中的行读入python字典的最佳方法,python,dictionary,Python,Dictionary,我有一个超过15k行的文件,每行有一个键和一个值。如果为了更快的阅读需要任何格式,我可以修改文件内容。目前,我已经把整个文件制作成一个dict,并对其进行评估,这是阅读文件的最佳方式还是我们可以遵循的更好的方法,请建议。 文件mymapfile.txt: { 'a':'this', 'b':'that', . . . . 'xyz':'message can have "special" char %s etc ' } 在这个文件上我正在做评估 f_read = eval(open('myma

我有一个超过15k行的文件,每行有一个键和一个值。如果为了更快的阅读需要任何格式,我可以修改文件内容。目前,我已经把整个文件制作成一个dict,并对其进行评估,这是阅读文件的最佳方式还是我们可以遵循的更好的方法,请建议。 文件mymapfile.txt:

{
'a':'this',
'b':'that',
.
.
.
.
'xyz':'message can have "special" char %s etc '
}
在这个文件上我正在做评估

f_read = eval(open('mymapfile.txt', 'r').read())
我担心的是我的文件不断增长,值可能会有引号、特殊字符等,我们需要将值“”或“”包装起来。使用字典格式,即使有小的语法错误,eval也会失败。所以使用readlines()是否更好如果我们在文件中创建dict,那么在不将文件设置为dict的情况下,创建dict或eval的速度会更快?对于读线,我可以简单地在每行中写入文本,并使用:分隔,不必担心任何特殊字符

读取行的文件:

a:this
b:that
.
.
.
.
xyz:message can have "special" char %s etc

如果只想加载数据,请避免
eval

您只需要读取行,识别键和值,以便建议的文件格式:

a:this
b:that
...

非常适合。

假设您坚持使用json,您可能想看看。它在转储和加载数据时似乎非常快(即使有内存损失)

以下两篇文章有一些基准,可能会帮助您做出决策:


@Mahesh24 answer返回一个集合,其中的值看起来像dict,但不是。他的变量也覆盖了内置dict。而是使用两行:

s={ (i.strip())  for i in open('ss.txt','r').readlines() }
d = {i.split(':')[0]:i.split(':')[1] for i in s}

然后,d将使用读入值进行dict。稍微考虑一下可能会将其转换为一行代码。非常确定python标准库中有read csv,这将为您提供更多的选项和健壮性。如果您的数据采用任何其他标准格式,则优先使用适当的标准库。上面的两行代码但会给您一种快速而肮脏的方式。可以更改:“用于逗号或数据中的任何分隔符。

使用JSON。JSON解析器会将其转换为dict,语法非常简单。根据文件的大小,将其全部读入内存在某个时候可能会变得不切实际,您需要考虑流式传输文件。不要这样做,而是使用
Pickle
module.@Boristeider JSON在这里不起作用-它需要
quotes-不是
quotes-它将抛出解析errors@JonClements我建议更改格式,因为OP似乎对这一想法持开放态度。你认为读行和拆分附加到我的dict每行更好吗?实际上这取决于你的偏好。如果您能够以任何格式导出数据,请使用XML或JSON等格式。然后使用相应的解析器导入它们。但是,如果希望避免特殊的数据格式,则可以使用建议的方法。