繁体   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