如何将文本文件提取到字典中 [英] how to extract a text file into a dictionary

查看:133
本文介绍了如何将文本文件提取到字典中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想知道如何在python中将文本提取到字典中。文本文件格式如下(见下文),并以方式解压缩,例如对象地球是键,其半径,周期和全部都在其键内。



<$对象:Sun

卫星:水星,金星,地球,火星,木星,土星,天王星,海王星, Ceres,冥王星,Haumea,Makemake,Eris

半径:20890260

轨道半径:0

对象:地球

轨道半径:77098290

期间:365.256363004

半径:6371000.0

卫星:月球

对象:月亮

轨道半径:18128500

半径:1737000.10

期间:27.321582


解决方案

  nk =
RootObject:Sun

对象:太阳
卫星:水星,金星,地球,火星,木星,土星,天王星,海王星,Ceres,冥王星,Haumea,Makemake,Eris
半径:20890260
轨道半径:0

对象:地球
轨道半径:77098290
期间:365.256363004
半径:6371000.0
卫星:月球

对象:月球
轨道半径:18128500
半径:1737000.10
期间: 27.321582



my_test_dict = {}
for x在nk.splitlines()中:
如果':'在x:
如果x.split(':')[0] .strip()=='RootObject':
root_obj = x.split(':')[1] .strip()
elif x.split(':')[0] .strip()=='Object':
my_test_dict [x.split(':')[1] .strip()] = {}
current_dict = x.split(':')[1] .strip()
如果x.split(':')[1] .strip()!= root_obj:
for my_test_dict中的x1:
如果my_test_dict [x1]中的'Satellites':
如果x.split(':')[1] .strip()在my_test_dict [x1] ['卫星']。split(',' ):
my_test_dict [x.split(':')[1] .strip()] ['RootObject'] = x1
else:
my_test_dict [curr ent_dict] [x.split(':')[0] .strip()] = x.split(':')[1] .strip()

打印my_test_dict

输出:

 水星,金星,地球,火星,木星,土星,天王星,海王星,Ceres,冥王星,Haumea,Makemake,Eris',$ {
'
'Orbital Radius':'0',
'Radius':'20890260'
},

'Moon':
{
'Orbital Radius':'18128500',
'Radius':'1737000.10',
'Period':'27 .321582',
'RootObject':'Earth'
} ,

'地球':
{
'卫星'''''
'轨道半径':'77098290',
'Radius' :'6371000.0',
'Period':'365.256363004',
'RootObject':'Sun'
}
}
/ pre>

i am wondering how you would extract a text into dictionary in python. the text file is formatted as such(see below) and extract in way so that object earth for example is the key and its radius, period and all are within its key.

RootObject: Sun

Object: Sun

Satellites: Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune,Ceres,Pluto,Haumea,Makemake,Eris

Radius: 20890260

Orbital Radius: 0

Object: Earth

Orbital Radius: 77098290

Period: 365.256363004

Radius: 6371000.0

Satellites: Moon

Object: Moon

Orbital Radius: 18128500

Radius: 1737000.10

Period: 27.321582

解决方案

nk="""
RootObject: Sun

Object: Sun
Satellites: Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune,Ceres,Pluto,Haumea,Makemake,Eris
Radius: 20890260
Orbital Radius: 0

Object: Earth
Orbital Radius: 77098290
Period: 365.256363004
Radius: 6371000.0
Satellites: Moon

Object: Moon
Orbital Radius: 18128500
Radius: 1737000.10
Period: 27.321582

"""

my_test_dict={}
for x in nk.splitlines():
    if ':' in x:
        if x.split(':')[0].strip()=='RootObject':
            root_obj=x.split(':')[1].strip()
        elif x.split(':')[0].strip()=='Object':
            my_test_dict[x.split(':')[1].strip()]={}
            current_dict=x.split(':')[1].strip()
            if x.split(':')[1].strip()!=root_obj:
                for x1 in my_test_dict:
                    if 'Satellites' in my_test_dict[x1]:
                        if x.split(':')[1].strip() in my_test_dict[x1]['Satellites'].split(','):
                            my_test_dict[x.split(':')[1].strip()]['RootObject']=x1
        else:
            my_test_dict[current_dict][x.split(':')[0].strip()]=x.split(':')[1].strip()

print my_test_dict

output:

{
    'Sun':
        {
        'Satellites': 'Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune,Ceres,Pluto,Haumea,Makemake,Eris',
        'Orbital Radius': '0',
        'Radius': '20890260'
        },

    'Moon':
        {
        'Orbital Radius': '18128500',
        'Radius': '1737000.10',
        'Period': '27.321582',
        'RootObject': 'Earth'
         },

    'Earth':
        {
        'Satellites': 'Moon',
        'Orbital Radius': '77098290',
        'Radius': '6371000.0',
        'Period': '365.256363004',
        'RootObject': 'Sun'
        }
    }

这篇关于如何将文本文件提取到字典中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆