1

我有这种格式的选项文件:

key value\t\n

注意:B:。一些值在它之后显示选项卡。

我使用如下代码:

        src               = open("conf.cfg").readlines()
        item          =  item.split(" ")[0:2]
        key           =   item[0]
        value         =   item[1]
        dict_[key]    = value

我可以使用生成器表达式来获得相同的结果吗?

4

4 回答 4

1

您可以使用字典理解,例如:

with open("conf.cfg") as f:
    dict_ = {key: value 
             for key, value in (line.strip().split(" ")[:2] 
                                for line in f)}
于 2014-03-17T22:57:32.133 回答
1

是的,您可以使用生成器表达式,它看起来像这样:

with open("conf.cfg") as f:
    dict_ = dict(line.split() for line in f)    

我假设您在键或值中没有空格。如果它们中有空格(以及“它们被引用”字符串),那么使用csv模块读取文件会更容易。

于 2014-03-17T23:01:18.697 回答
1

也许这样:

with open('config.txt') as f:
    dict_ = {k: v for k, v in (line.split() for line in f.readlines())}
于 2014-03-17T23:02:44.893 回答
0

使用生成器功能:

def myGenerator():
    with open("conf.cfg") as f:
        for line in f.readlines():
            yield(line.split())

result = {k:v for k,v in myGenerator()}

print result
于 2014-03-17T23:24:16.550 回答