Python:如果头文件存在,则用作variab

2024-09-27 09:37:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在和一个有许多列(超过1000列)的HDUList一起工作。这些列与星系团中由外部代码拟合的星系特征有关。列应以“ser”或“dev”结尾。但是,有些列太长,名称被截断(例如:LOGRE\u F3mF2\u F850LPse或eLOGRE\u F3mF2\u 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\u avg\u F850LPse” 我得到错误(示例):

KeyError: "Key 'logre_avg_f850lpser' does not exist."

Tags: 代码名称functionregionavgstr星系团hdulist
2条回答

看起来名字的长度是20个字符。如果是这样的话,你可以尝试以下方法:

key = root + '_avg_f850lpser' 
key = key[:20]

这确保了key总是小于或等于20个字符,并在字符串的右端进行修剪(因为截断似乎发生在右端)。你知道吗

如果20个字符不是截断(总是)发生的位置,则需要显示更多截断列键的示例。你知道吗

尝试使用hasattr(object,property)检测密钥是否确实存在。否则,试着重组你的字典,这样你就不会有这样奇怪的名字。你知道吗

相关问题 更多 >

    热门问题