尝试在循环中运行一个表达式并将一个变量映射到它的输出
import re
var_name = ['h5_vort', 'h5_temp','sfc']
for var in var_name:
if var == [string for string in var_name if re.match(re.compile('h5.'),string)]:
lev=500.0
else:
lev=200.0
print(var)
print(lev)
我得到的输出是
h5_vort
200.0
h5_temp
200.0
sfc
200.0
我在等
h5_vort
500.0
h5_temp
500.0
sfc
200.0
不必使用正则表达式
只需检查h5
var_name = ['h5_vort', 'h5_temp','sfc']
for var in var_name:
if 'h5' in var:
lev=500.0
else:
lev=200.0
print(var)
print(lev)
首先,你不应该在循环中使用re.compile。re
模块会自动处理。
第二,你有一个循环中的循环。表达式
[string for string in var_name if re.match(re.compile('h5.'),string)]
会给你[h5_vort, h5=temp]
,你的两个变量都不会是==
,所以它每次都是假的
您应该想要if re.match('h5.', var):
或类似的东西。