我正试图找到一种方法来忽略大字典中的空输入。数据来自.cdt文件 - 它最初是excel但现在是文本格式。我尝试了一些修复,没有任何作用。我将找到该字典的每个元素的最小和最大输入和标准偏差,但我需要确保首先忽略所有空条目。
这是我用来挑选和打印我想要的特定变量的代码。任何正确方向的指针都会受到赞赏。
谢谢!
planets = {}
with open ('planets.csv', 'r') as f:
for line in f :
line = line.strip("\n ' '")
line = line.split(",")
name = line[1]
exop = {'Host Name' : line[1],
'Planet Letter' : line[2],
'Discovery Method' : line[3],
'Number of Planets in System' : line[4],
'Orbital Period [days]' : line[5],
'Orbit Semi-Major Axis [AU]' : line[6],
'Eccentricity' : line[7],
'Inclination[deg]' : line[8],
'Planets Mass of M*sin(i)[Jupiter mass]' : line[9],
'Planets Mass of M*sin(i) Provenance]' : line[10],
'Planet Radius [Jupiter radii]' : line[11],
'Planet Density [g/cm**3]' : line [12],
'TTV Flag' : line [13],
'Kepler Field Flag' : line[14],
'K2 Mission Flag' : line[15],
'Number of Notes' : line[16],
'Distance [pc]' : line[21]
'Effective Temparature [k]' : line[25]}
print exop
print exop['Distance [pc]']
f.close();
答案 0 :(得分:0)
最后可能更容易过滤词典。这是因为如果您检查line
是否有任何空值,例如line[24]
(从未使用过)是空的但没有其他值,那么您最终会丢弃有效数据。
空字符串是假的,但数值0
也是如此。我已经编写了一个列表解析,只有在空字符串而不是零值的情况下才能丢弃最终列表中的项目。
list_of_dicts = []
for x in range(4):
list_of_dicts.append({'a': 123,
'b': 'hello',
'c': 0
})
# Bad entry
list_of_dicts.append({'a': 123,
'b': '',
'c': 456
})
# Rebuild without bad entries
new_list_of_dicts = [dictionary for dictionary in list_of_dicts
if all(str(data[1]) for data in dictionary.items())] # The logic to catch empty strings
print(list_of_dicts)
print('\n')
print(new_list_of_dicts)