你当时几乎没有;你应该使用key
在词典中的关键,不是file
:
(key, val) = line.split(': ')
d[key] = val.rstrip('\n')
我添加了一个str.strip()
通话;大概你不需要在每行结尾存储换行符。
但是,您需要单独分析购买列表,因为这些不适合您的key: value
模式。我在这里假设它是最后条目列表:
d = {}
with open("sometext.txt", "r") as f:
for line in f:
if line.startswith('List of purchases'):
purchases = d['List of purchases'] = []
for line in f:
info = line.strip('() \n').split(', ')
purchases.append(info)
break
key, val = line.split(': ')
d[key] = val.rstrip('\n')
当你阅读List of purchases
线这将读取文件的剩余部分为一个单独的列表。
演示:
>>> from io import StringIO
>>> sample = '''\
... Shop: someshop
... Schedule: from 8:00 to 18:00
... Day: 11:11:2011
... Items Sold: 456
... List of purchases:
... (product, 123, 12:30)
... (product, 123, 12:30)
... (product, 123, 12:30)
... '''
>>> d = {}
>>> with StringIO(sample) as f:
... for line in f:
... if line.startswith('List of purchases'):
... purchases = d['List of purchases'] = []
... for line in f:
... info = line.strip('()\n').split(', ')
... purchases.append(info)
... break
... key, val = line.split(': ')
... d[key] = val.rstrip('\n')
...
>>> d
{'Schedule': 'from 8:00 to 18:00 ', 'List of purchases': [['product', '123', '12:30'], ['product', '123', '12:30'], ['product', '123', '12:30']], 'Day': '11:11:2011 ', 'Shop': 'someshop ', 'Items Sold': '456 '}
>>> from pprint import pprint
>>> pprint(d)
{'Day': '11:11:2011 ',
'Items Sold': '456 ',
'List of purchases': [['product', '123', '12:30'],
['product', '123', '12:30'],
['product', '123', '12:30']],
'Schedule': 'from 8:00 to 18:00 ',
'Shop': 'someshop '}
什么是你期望的输出? – 2015-03-25 11:58:37
我必须得到的关键:值对成字典, – 2015-03-25 12:06:52