如何创建包含文本文件

时间:2015-09-14 22:06:49

标签: python dictionary

我有一个文本文件(one.txt),它包含任意数量的键值对(其中键和值用冒号分隔 - 例如,x:17)。这里有一些(减去数字):

  1. 马提斯:turpis
  2. Aliquam:adipiscing
  3. nonummy:ligula
  4. DUIS:ultricies
  5. nonummy:的Pretium
  6. 乌仁娜:悲
  7. 奥迪奥:mauris
  8. lectus:每
  9. 智能资料:ridiculus
  10. 特力:nonummy
  11. consequat:metus
  12. 我需要打开文件并创建一个包含所有键值对的字典。

    到目前为止,我已用

    打开文件
    file = []
    with open('one.txt', 'r') as _:
        for line in _:
            line = line.strip()
            if line:
                file.append(line)
    

    我这样打开它以摆脱新行字符和文本文件中的最后一条黑线。我得到了python中键值对的列表。

    我不确定如何使用列表键值对创建字典。 我尝试的一切都给了我一个错误。有些人说了些什么

      

    ValueError:字典更新序列元素#0的长度为1; 2是必需的

2 个答案:

答案 0 :(得分:4)

使用str.split()

with open('one.txt') as f:
    d = dict(l.strip().split(':') for l in f)

答案 1 :(得分:2)

split()将允许您指定分隔符:以将键和值分隔为单独的字符串。然后,您可以使用它们填充字典,例如:mydict

mydict = {}
with open('one.txt', 'r') as _:
    for line in _:
        line = line.strip()
        if line:
            key, value = line.split(':')
            mydict[key] = value
print mydict

输出:

{'mattis': 'turpis', 'lectus': 'per', 'tellus': 'nonummy', 'quam': 'ridiculus', 'Duis': 'ultricies', 'consequat': 'metus', 'nonummy': 'pretium', 'odio': 'mauris', 'urna': 'dolor', 'Aliquam': 'adipiscing'}