如何将文本文件提取到字典中 [英] how to extract a text file into a dictionary
本文介绍了如何将文本文件提取到字典中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想知道如何在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',$ {
/ pre>
'
'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'
}
}
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屋!
查看全文