[英]how to convert text file data to python dictionary
我见过很多这样的问题,但没有一个像我的项目与换行符的特定分离。
文本文件:
John
City: New york
Job: surgeon
Happy: no
Terry
City: Miami
House: Yes
Job: nurse
Married: No
Joe
City: LA
Married: No
Job: None
字典应该有单独的项目,由文本文档中的空行决定,格式保持不变 like= 'key': 'value' 但字典的每个项目没有预先设定的数量。 可以是像 joe 这样的 4 个项目,也可以是像 john 这样的三个项目。
到目前为止我有:
with open(file.txt) as file:
id = {}
for line in file:
if line is not '\n'
k,v = line.strip().split(': ', 1)
id[k] = v.strip()
print(id)
我知道这是不正确的,之前的 quides 在处理换行符时没有帮助。
我希望它看起来像:
{
"John": {
"City": "new york",
"Job": "surgeon",
"Happy": "no"
},
"Terry": {
"City": "Miami",
"House": "Yes",
"Job": "nurse",
"Married": "No"
},
"Joe": {
"City": "LA",
"Married": "No",
"Job": "None"
}
}
尝试:
text = """\
John
City: New york
Job: surgeon
Happy: no
Terry
City: Miami
House: Yes
Job: nurse
Married: No
Joe
City: LA
Married: No
Job: None"""
out = {}
for group in text.split("\n\n"):
lines = group.split("\n")
out[lines[0]] = dict(l.split(": ") for l in lines[1:])
print(out)
印刷:
{
"John": {"City": "New york", "Job": "surgeon", "Happy": "no"},
"Terry": {"City": "Miami", "House": "Yes", "Job": "nurse", "Married": "No"},
"Joe": {"City": "LA", "Married": "No", "Job": "None"},
}
编辑:要从文件中读取text
:
with open("your_file.txt", "r") as f_in:
text = f_in.read().strip()
out = {}
for group in text.split("\n\n"):
lines = group.split("\n")
out[lines[0]] = dict(l.split(": ") for l in lines[1:])
print(out)
编辑 2:
如果您的文件包含:
City: New york
Job: surgeon
Happy: no
City: Miami
House: Yes
Job: nurse
Married: No
City: LA
Married: No
Job: None
然后:
with open("your_file.txt", "r") as f_in:
text = f_in.read().strip()
out = []
for group in text.split("\n\n"):
lines = group.split("\n")
out.append(dict(l.split(": ") for l in lines))
print(out)
印刷:
[
{"City": "New york", "Job": "surgeon", "Happy": "no"},
{"City": "Miami", "House": "Yes", "Job": "nurse", "Married": "No"},
{"City": "LA", "Married": "No", "Job": "None"},
]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.