2024-10-03 09:09:17 发布
网友
导入文件后,打开并读取它
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'}
逐行处理:
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,然后在找到的第一个:冒号上将该行拆分为两个值,并将剥离的结果存储为映射的键和值。你知道吗
dict(map(..) for line in fop)
fop
:
map(str.strip, line.split(':', 1))从分割线的每个部分的开始和结束处删除空白。.split()本身将:上的拆分限制为只包含一个这样的字符,以防止行中任何额外的:冒号混淆只需要(key, value)对的dict构造函数。你知道吗
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()
逐行处理:
dict(map(..) for line in fop)
使用的是generator expression;我们在每行上循环fop
,然后在找到的第一个:
冒号上将该行拆分为两个值,并将剥离的结果存储为映射的键和值。你知道吗map(str.strip, line.split(':', 1))
从分割线的每个部分的开始和结束处删除空白。.split()
本身将:
上的拆分限制为只包含一个这样的字符,以防止行中任何额外的:
冒号混淆只需要(key, value)
对的dict
构造函数。你知道吗演示:
非生成器表达式的长版本是:
相关问题 更多 >
编程相关推荐