Py学习  »  Python

在具有多个变量的循环中需要Python帮助

ethos101 • 2 年前 • 221 次点击  

基本上,我想在两个变量的列表中迭代5次,然后以迭代的方式填充输出。我可能描述得不够好,所以我将展示我想要得到的。我将在query2变量中使用一个多行查询,但为了解决这个问题,我对它进行了一些简化。

以下是我正在编写的代码:

systems = ["prd1", "prd2", "frz1", "frz2", "dev"]
qgsystems = ["Prd1_v2", "Prd2_v2", "Frz1_v2", "Frz2_v2", "Devl_v2"]
query2 = f"""{{fn blah({x}_1_output.csv)}}select {y};"""
for x, y in zip(systems, qgsystems):
    print(query2)

我想要得到的结果是:

{fn blah(prd1_1_output.csv)}select Prd1_v2;
{fn blah(prd2_1_output.csv)}select Prd2_v2;
{fn blah(frz1_1_output.csv)}select Frz1_v2;
{fn blah(frz2_1_output.csv)}select Frz2_v2;
{fn blah(dev_1_output.csv)}select Devl_v2;

但我得到的却是:

{fn blah(dev_1_output.csv)}select Devl_v2;
{fn blah(dev_1_output.csv)}select Devl_v2;
{fn blah(dev_1_output.csv)}select Devl_v2;
{fn blah(dev_1_output.csv)}select Devl_v2;
{fn blah(dev_1_output.csv)}select Devl_v2;

我做错了什么?

当我开始新的课程时,我会更接近问题所在。但我还是被卡住了。

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-1-3ea2eb0d6f53> in <module>
      1 systems = ["prd1", "prd2", "frz1", "frz2", "dev"]
      2 qgsystems = ["Prd1_v2", "Prd2_v2", "Frz1_v2", "Frz2_v2", "Devl_v2"]
----> 3 query2 = f"""{{fn blah({x}_1_output.csv)}}select {y};"""
      4 for x, y in zip(systems, qgsystems):
      5     print(query2)

NameError: name 'x' is not defined

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/132695
 
221 次点击  
文章 [ 2 ]  |  最新文章 2 年前
fsenart
Reply   •   1 楼
fsenart    2 年前
systems = ["prd1", "prd2", "frz1", "frz2", "dev"]
qgsystems = ["Prd1_v2", "Prd2_v2", "Frz1_v2", "Frz2_v2", "Devl_v2"]
query2 = "{{fn blah({x}_1_output.csv)}}select {y};"
for x, y in zip(systems, qgsystems):
    print(query2.format(x=x, y=y))
MatsLindh
Reply   •   2 楼
MatsLindh    2 年前

你不能在循环外定义字符串,希望在循环内打印时填充它。相反,您必须在循环中构建字符串:

systems = ["prd1", "prd2", "frz1", "frz2", "dev"]
qgsystems = ["Prd1_v2", "Prd2_v2", "Frz1_v2", "Frz2_v2", "Devl_v2"]

for x, y in zip(systems, qgsystems):
    print(f"{{fn blah({x}_1_output.csv)}}select {y};")

输出:

{fn blah(prd1_1_output.csv)}select Prd1_v2;
{fn blah(prd2_1_output.csv)}select Prd2_v2;
{fn blah(frz1_1_output.csv)}select Frz1_v2;
{fn blah(frz2_1_output.csv)}select Frz2_v2;
{fn blah(dev_1_output.csv)}select Devl_v2;