2 回答
TA贡献1815条经验 获得超6个赞
你快到了,你需要用双换行符拆分整个文件,然后键是该组中的第一行,而 val 是所有其他行。
d = {}
with open("dummy.txt") as f:
for group in f.read().split('\n\n'):
key, *val = group.split('\n')
d[key] = ' '.join(val)
print (d)
结果:
{'Lorem ipsum dolor sit amet (consectetur adipiscing elit)': '2020-01-05 20:01:02 Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet',
'Lorem ipsum dolor': '2019-01-30 12:21:50 Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem'}
TA贡献1817条经验 获得超6个赞
您需要将数据(文件流)拆分为\n\n
,然后每个项目都需要拆分为\n
。根据您的数据结构,项目中的第一行是键,其余行用空格连接
一些指示
明确
为 设置模式
with open
,即使默认为r
使用
dict()
instead of{}
以避免与 a 混淆set
避免在块中编写一堆代码
with open
。获取数据并关闭文件流[start=0:stop=end:step=1]
是获取“列表中的其余项目”的好方法用于
json.dumps
打印带有数据的漂亮消息 (indent
,sort_keys
)
import json
d = dict()
with open("dummy.txt", "r") as f:
data = f.read()
items = data.split("\n\n")
for item in items:
item_lines = item.split("\n")
d[item_lines[0]] = " ".join(item_lines[1:])
print(json.dumps(d, indent=2, sort_keys=True))
输出
{
"Lorem ipsum dolor": "2019-01-30 12:21:50 Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem",
"Lorem ipsum dolor sit amet (consectetur adipiscing elit)": "2020-01-05 20:01:02 Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet"
}
添加回答
举报