如何导入和转换?

2024-10-03 09:09:17 发布

您现在位置:Python中文网/ 问答频道 /正文

导入文件后,打开并读取它

fop = open('lottery.txt','r')
_str = fop.read()
fop.close()

我得到了这样的内容:

'   monday: 2 23\ntuesday :4 31\nwednesday   : 19 22\nthursday : 1'

如何将其转换为字典并得到以下结果:

{'monday': '2 23', 'tuesday': '4 31','wednesday': '19 22', 'thursday' : '1'}

Tags: 文件txt内容closeread字典openmonday
1条回答
网友
1楼 · 发布于 2024-10-03 09:09:17

逐行处理:

with open('lottery.txt', 'r') as fop:
    result = dict(map(str.strip, line.split(':', 1)) for line in fop)

dict(map(..) for line in fop)使用的是generator expression;我们在每行上循环fop,然后在找到的第一个:冒号上将该行拆分为两个值,并将剥离的结果存储为映射的键和值。你知道吗

map(str.strip, line.split(':', 1))从分割线的每个部分的开始和结束处删除空白。.split()本身将:上的拆分限制为只包含一个这样的字符,以防止行中任何额外的:冒号混淆只需要(key, value)对的dict构造函数。你知道吗

演示:

>>> open('/tmp/lottery.txt', 'w').write('   monday: 2 23\ntuesday :4 31\nwednesday   : 19 22\nthursday : 1')
>>> with open('/tmp/lottery.txt', 'r') as fop:
...     result = dict(map(str.strip, line.split(':', 1)) for line in fop)
... 
>>> result
{'tuesday': '4 31', 'thursday': '1', 'wednesday': '19 22', 'monday': '2 23'}

非生成器表达式的长版本是:

with open('lottery.txt', 'r') as fop:
    result = {}
    for line in fop:
        key, value = line.split(':', 1)
        result[key.strip()] = value.strip()

相关问题 更多 >