【问题标题】:How to convert a list of items into variables in python?如何将项目列表转换为python中的变量?
【发布时间】:2012-07-21 22:46:06
【问题描述】:

我在 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 regex list


    【解决方案1】:

    Keep data out of your variable names.不要使用变量,使用字典:

    d = {name: re.compile("%s=[a-z]+&" % name) for name in a}
    

    【讨论】:

    • 如果使用 Python 2.6 或更早版本:d = dict((name, re.compile("%s=[a-z]+&" % name) for name in a)
    • 如果我以后想在字符串上使用上面分配的正则表达式怎么办?
    • @abhinav:只需从字典中检索它:d["nt"]
    【解决方案2】:

    毫无疑问最好使用字典键,而不是变量。但仅供参考,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() 返回的字典。您的代码之所以有效,是因为您在全局范围内执行了它,它在函数内部不起作用。
    • 是的。这显然不是一个站得住脚的解决方案,只是一个有趣的怪癖。
    猜你喜欢
    • 2017-03-25
    • 2022-01-10
    • 2015-12-31
    • 2018-10-02
    • 2022-12-17
    • 2021-09-21
    • 1970-01-01
    • 2016-09-12
    • 1970-01-01
    相关资源
    最近更新 更多