在Python中连接变量名

时间:2016-04-27 19:13:16

标签: python concatenation

我需要检查看起来像这样的变量:

if name1 != "":
    (do something)

“name”之后的数字在1到10之间递增。

我是否需要编写测试十次,或者是否有一种方法(不使用数组或字典)来“连接”,可以这么说,变量名称?

我正在考虑这样的事情:

for i in range(10):
    if "name" + str(i) != "":
        (do something)

编辑:我无法使用列表,因为我实际上是在尝试解析Flask WTF表单中的结果,其结果是这样检索的:

print(form.name1.data)
print(form.name2.data)
print(form.name3.data)
etc.

3 个答案:

答案 0 :(得分:4)

  1. 使用列表,例如:

    names = ['bob', 'alice', 'john']
    

    然后迭代列表:

    for n in names:
      if n != "":
         (do something)
    
  2. 或者您可以使用复合if语句:

    if (name1 != "" or name2 != "" or name3 != "")
    
  3. 最好的解决方案是使用解决方案#1。

答案 1 :(得分:2)

如果您无法使用列表或词典,则可以使用for i in range(10): if eval("name" + str(i)) != "": (do something)

Request.Url.Scheme + "://" + Request.Url.Host  + Request.RawUrl

答案 2 :(得分:0)

首先,您的应用具有无效逻辑。你应该使用list,dict或你的自定义obj。

你可以在全局变量中获得所有变量。 Globals是一个词典。

你可以做下一个:

for i in range(10):
    if globals().get('name%d' % i):
        # do something