我正在使用一个包含许多列(超过1000个)的HDUList。这些列与外部代码拟合的星系中的星系特征有关。列应以'ser'或'dev'结尾。但是,有些列太长,名称被切断(例如:LOGRE_F3mF2_F850LPse或eLOGRE_F3mF2_F850LPs)
我正在定义用于对数据执行各种操作的函数。我很难系统地选择我想要的列,因为名称都不同。
现行程序(与问题有关的部分):
def function(xaxisroot,yaxisroot,otheroptions):
xaxis = xaxisroot + '_avg_f850lpser'
yaxis = yaxisroot + '_F' + str(region[0]) + 'mF' + str(region[1]) + '_f850lpser'
function('logre','logre')
由于列实际上是:'LOGRE_avg_F850LPse' 我得到错误(例子):
KeyError: "Key 'logre_avg_f850lpser' does not exist."
答案 0 :(得分:0)
尝试使用hasattr(object,property)
检测密钥是否确实存在。否则,请尝试重构您的词典,这样您就不会有这样奇怪的名字。
答案 1 :(得分:0)
看起来名字的截止值为20个字符。如果是这种情况,您可以尝试以下方式:
key = root + '_avg_f850lpser'
key = key[:20]
这可以确保您的key
始终为20个字符或更少,并在字符串的右端进行修剪(因为那里会发生切断)。
如果20个字符不在截止(始终)发生的位置,则您需要显示更多截止列密钥的示例。