Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 打开文本文件,然后将内容存储到python 2.7中的嵌套字典中_Python 2.7 - Fatal编程技术网

Python 2.7 打开文本文件,然后将内容存储到python 2.7中的嵌套字典中

Python 2.7 打开文本文件,然后将内容存储到python 2.7中的嵌套字典中,python-2.7,Python 2.7,我对Python和一般的计算语言相当陌生。我想打开一个文本文件,然后将其内容存储在嵌套字典中。以下是我目前的代码: inputfile = open("Proj 4.txt", "r") for line in inputfile: line = line.strip() print line NGC = {} inputfile.close() 我知道我需要对字典使用添加操作,我只是不确定如何继续。这是文本文件的副本: NGC0224 Name: Andromeda Gal

我对Python和一般的计算语言相当陌生。我想打开一个文本文件,然后将其内容存储在嵌套字典中。以下是我目前的代码:

inputfile = open("Proj 4.txt", "r")
for line in inputfile:
    line = line.strip()
    print line
NGC = {}

inputfile.close()
我知道我需要对字典使用添加操作,我只是不确定如何继续。这是文本文件的副本:

NGC0224
Name: Andromeda Galaxy
Messier: M31
Distance: 2900
Magnitude: 3.4
NGC6853
Name: Dumbbell Nebula
Messier: M27
Distance: 1.25
Magnitude: 7.4
NGC4826
Name: Black Eye Galaxy
Messier: M64
Distance: 19000
Magnitude: 8.5
NGC4254
Name: Coma Pinwheel Galaxy
Messier: M99
Distance: 60000
Brightness: 9.9 mag
NGC5457
Name: Pinwheel Galaxy
Messier: M101
Distance: 27000
Magnitude: 7.9
NGC4594
Name: Sombrero Galaxy
Messier: M104
Distance: 50000
>>> with open(infilepath) as infile:
...   answer = {}
...   name = None
...   for line in infile:
...     line = line.strip()
...     if line.startswith("NGC"):
...       name = line
...       answer[name] = {}
...     else:
...       var, val = line.split(':', 1)
...       answer[name][var.strip()] = val.strip()
... 
>>> answer
{'NGC6853': {'Messier': 'M27', 'Magnitude': '7.4', 'Distance': '1.25', 'Name': 'Dumbbell Nebula'}, 'NGC4254': {'Brightness': '9.9 mag', 'Messier': 'M99', 'Distance': '60000', 'Name': 'Coma Pinwheel Galaxy'}, 'NGC4594': {'Messier': 'M104', 'Distance': '50000', 'Name': 'Sombrero Galaxy'}, 'NGC0224': {'Messier': 'M31', 'Magnitude': '3.4', 'Distance': '2900', 'Name': 'Andromeda Galaxy'}, 'NGC4826': {'Messier': 'M64', 'Magnitude': '8.5', 'Distance': '19000', 'Name': 'Black Eye Galaxy'}, 'NGC5457': {'Messier': 'M101', 'Magnitude': '7.9', 'Distance': '27000', 'Name': 'Pinwheel Galaxy'}}

您必须更好地定义如何将这些数据映射到字典。如果您可以更改文件格式,最好将其重新格式化为标准INI文件。你可以通过模块来阅读

但如果你真的想走这条路。下面是一个快速而肮脏的解决方案:

d = {}
k = ''
for line in open('Proj 4.txt'):
    if ':' in line:
        key, value = line.split(':', 1)
        d[k][key] = value.strip()
    else:
        k = line.strip()
        d[k] = {}
dict d具有已解析的文件

with open(infilepath) as infile:
  answer = {}
  name = None
  for line in infile:
    line = line.strip()
    if line.startswith("NGC"):
      name = line
      answer[name] = {}
    else:
      var, val = line.split(':', 1)
      answer[name][var.strip()] = val.strip()
与文本文件一起输出:

NGC0224
Name: Andromeda Galaxy
Messier: M31
Distance: 2900
Magnitude: 3.4
NGC6853
Name: Dumbbell Nebula
Messier: M27
Distance: 1.25
Magnitude: 7.4
NGC4826
Name: Black Eye Galaxy
Messier: M64
Distance: 19000
Magnitude: 8.5
NGC4254
Name: Coma Pinwheel Galaxy
Messier: M99
Distance: 60000
Brightness: 9.9 mag
NGC5457
Name: Pinwheel Galaxy
Messier: M101
Distance: 27000
Magnitude: 7.9
NGC4594
Name: Sombrero Galaxy
Messier: M104
Distance: 50000
>>> with open(infilepath) as infile:
...   answer = {}
...   name = None
...   for line in infile:
...     line = line.strip()
...     if line.startswith("NGC"):
...       name = line
...       answer[name] = {}
...     else:
...       var, val = line.split(':', 1)
...       answer[name][var.strip()] = val.strip()
... 
>>> answer
{'NGC6853': {'Messier': 'M27', 'Magnitude': '7.4', 'Distance': '1.25', 'Name': 'Dumbbell Nebula'}, 'NGC4254': {'Brightness': '9.9 mag', 'Messier': 'M99', 'Distance': '60000', 'Name': 'Coma Pinwheel Galaxy'}, 'NGC4594': {'Messier': 'M104', 'Distance': '50000', 'Name': 'Sombrero Galaxy'}, 'NGC0224': {'Messier': 'M31', 'Magnitude': '3.4', 'Distance': '2900', 'Name': 'Andromeda Galaxy'}, 'NGC4826': {'Messier': 'M64', 'Magnitude': '8.5', 'Distance': '19000', 'Name': 'Black Eye Galaxy'}, 'NGC5457': {'Messier': 'M101', 'Magnitude': '7.9', 'Distance': '27000', 'Name': 'Pinwheel Galaxy'}}

文本文件中的条目甚至没有用新行分隔吗?还是你的格式有误?@damned:格式不好。我刚刚修复了它。我希望能够调用字典中的每个NGC号码,并将该号码对应的信息作为我的输出。使用