1

次の形式のオプション ファイルがあります。

key value\t\n

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_ = 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 に答える
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 に答える
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 に答える