[英]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.