我有一个Python列表,类似于这样:
a=['nt','mt','pt']
我希望将上面列表中的每一项都作为一个变量,并将该变量赋值给涉及该变量的正则表达式。
输出: 我希望得到类似这样的结果:
nt=re.compile("%s=[a-z]+&" %nt)
mt=re.compile("%s=[a-z]+&" %mt)
pt=re.compile("%s=[a-z]+&" %pt)
我该如何开始做这个?谢谢。 [对不起,我的问题没有最好的表述方式]
毫无疑问,最好使用字典键而不是变量。但是请注意,在Python中,变量实际上已经存储在一个字典中,您可以通过调用vars()
或locals()
来访问它。这意味着可以通过将值分配给此字典来动态创建变量,例如:
>>> new_var_name = 'my_var'
>>> vars()[new_var_name] = "I'm your new variable!"
>>> print my_var
"I'm your new variable!"
vars()
才能被证明是合理的。但至少这很有趣。无论如何,请使用Sven Marnach的答案。vars()
或locals()
返回的字典。你只能更改globals()
返回的字典。你的代码能够正常运行,是因为你在全局范围内执行它,但在函数中它将无法工作。 - Sven Marnach
d = dict((name, re.compile("%s=[a-z]+&" % name) for name in a)
- cdhowied["nt"]
等。 - Sven Marnach