如何在for循环中获得python通配符和re



尝试在循环中运行一个表达式并将一个变量映射到它的输出

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):或类似的东西。

最新更新