簡體   English   中英

如何將文本文件數據轉換為python字典

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM