Python 嵌套for循环问题

Python 嵌套for循环问题,python,python-2.7,for-loop,python-3.x,Python,Python 2.7,For Loop,Python 3.x,我很难把我的头绕在这个for循环上。我似乎无法使它正常工作 我想做的是让它建立一个标题字符串,然后是信息,标题,然后是信息,等等 这是我的循环: for pod in root.findall('.//pod'): title = pod.attrib['title'] + "\n\n" joined += title for pt in root.findall('.//plaintext'): if pt.text:

我很难把我的头绕在这个for循环上。我似乎无法使它正常工作

我想做的是让它建立一个标题字符串,然后是信息,标题,然后是信息,等等

这是我的循环:

for pod in root.findall('.//pod'):
        title = pod.attrib['title'] + "\n\n"
        joined += title
        for pt in root.findall('.//plaintext'):
            if pt.text:
                info = " " + pt.text + "\n\n"
                joined += info

这可能是一个愚蠢的问题,但任何帮助都将不胜感激。

通过嵌套循环,您基本上建立了一个图形,第一个循环的值在x轴上,第二个循环的值在y轴上。这将得到所有可能值混合在一起的输出。例如,如果您的标题是:[“圣杯”、“布莱恩的生活”、“飞行马戏团”],而您的信息是[“过度关注”、“NSFW”、“完全荒谬”],那么您的输出将是:

"""
Try buffering all data and then obtain the string you want.
I'm assuming your want output like

title1 info1
title1 info1
title1 info2
title1 info2
title2 info1
title2 info2
...
...

"""


import StringIO

my_string_buf = StringIO.StringIO()
for pod in root.findall('.//pod'):
    for pt in root.findall('.//plaintext'):
         if pt.text:
              my_string_buf.write("{0} {1}\n".format(pod, pt.text))

# Reset buffer.
my_string_buf.seek(0)

# Obtain the string.
my_string = my_string_buf.read()
"""
Holy Grail Overwatched
Holy Grail NSFW
Holy Grail Perfectly Absurd
Life of Brian Overwatched
...
"""
要解决这个问题,你需要找到一些方法来关联标题和信息。例如,您可能可以合并
root.findall()
调用以同时获取两条信息(这似乎不是标准的库命令,因此我无法告诉您这是否适合您)

如果您知道
root.findall()
以正确的顺序返回,那么您应该能够使用:

pods = root.findall('.//pod')
plain_text = root.findall('.//plaintext')
for title,info in zip(pods,plain_text):
    joined += "{0} {1}\n\n".format(title,info)

内置的
zip()
函数接受两个列表并创建一个新列表,其中第一个元素是输入列表的第一个元素的组合,第二个元素是输入列表的第二个元素的组合,等等。。。你可以阅读更多关于
zip()

你可以编辑你的文章来包括你的输入(
root
)、输出和预期输出吗?我还看到你用python-2.7和python-3.x标记了这篇文章。我想你只用一个。