我有一个带有头的数组,并使用以下命令获取头:
>>> headers=list(data.dtype.names)
>>> headers
['SqNr', 'Xpos', 'Ypos', 'ALPHA_J2000', 'DELTA_J2000', \
'UMAG', 'BMAG', 'VMAG', 'RMAG', 'IMAG', 'MB420MAG', \
'MB464MAG', 'MB485MAG', 'MB518MAG', 'MB571MAG', 'MB604MAG',\
'MB646MAG', 'MB696MAG', 'MB753MAG', 'MB815MAG', 'MB855MAG',\
'MB915MAG', 'UMAG_ERR', 'BMAG_ERR', 'VMAG_ERR', 'RMAG_ERR',\
'IMAG_ERR', 'MB420MAG_ERR', 'MB464MAG_ERR', 'MB485MAG_ERR',\
'MB518MAG_ERR', 'MB571MAG_ERR', 'MB604MAG_ERR', 'MB646MAG_ERR',\
'MB696MAG_ERR', 'MB753MAG_ERR', 'MB815MAG_ERR', 'MB855MAG_ERR',\
'MB915MAG_ERR', 'PHOTOZ', 'PHOTOZ_ERR', 'PHOTOZ2', 'PHOTOZ2_ERR',\
'Z_B', 'Z_B_MIN', 'Z_B_MAX', 'T_B', 'ODDS', 'CHISQUARED', 'Z_M',\
'Z_fp', 'Z_sp', 'Z_s']
我想制作一个列表,其中包含结尾带有MAG
模式的所有字符串,另一个包含MAG_ERR
。我怎么能这么做?
我想用以下几行来得到正确的结果:
import re
pattern='MAG'
re.match(r'(%s)+$' % pattern, "".join(headers))
但它什么也不回。我怎样才能得到正确的答案:
a=['UMAG', 'BMAG', 'VMAG', 'RMAG', 'IMAG', 'MB420MAG',\
'MB464MAG', 'MB485MAG', 'MB518MAG', 'MB571MAG', 'MB604MAG',\
'MB646MAG', 'MB696MAG', 'MB753MAG', 'MB815MAG', 'MB855MAG','MB915MAG']
可以使用
str.endswith()
获取以所需字符串结尾的头:试试这个:
x[-3:]
取出每个字符串的最后三个字符,x[-7:]
取出最后七个字符。如果它们分别匹配MAG
或MAG_ERR
,lambda将返回true并将相应的字符串放入输出列表。你知道吗您还可以使用:
如果要使用正则表达式,可以使用列表:
MAG$
匹配行末尾的MAG
(这就是$
的意思),而.*
匹配MAG
或MAG_ERR
之前的任何内容。你知道吗您的解决方案将不起作用,因为您将所有标题合并到一个字符串中,使得以后很难将它们分开。使用
filter
或列表理解可以隐式地在数组中循环,拉出您感兴趣的项。你知道吗正则表达式解决方案:
使用字符串方法的更简单解决方案:
相关问题 更多 >
编程相关推荐