繁体   English   中英

使用python以相同的速度遍历文本文件中的列表和行?

[英]Iterating through a list and lines in text file at the same rate using python?

所以我有一个家庭作业,我在另一篇文章中问过,但不是很详细,因此我自己的错没有得到我想要的答案。 我需要做的是打开一个结构化的文本文件,其中文件的每一行都属于一个特定的类别。 虽然类别和顺序不会改变,但它们重复的次数可能会改变。 我的工作是获取每一行(忽略前 2 行)并向该行添加一个 XML 标记。 为此,我想出了一个包含类别字符串名称的列表。 我遇到的问题是,我无法弄清楚如何以与文件中文本行相同的速度遍历类别列表。

例如:

如果我的文本文件是:

peas
carrots
broccoli
beans

我的清单是

tagList=["apples","oranges","bananas","pears"]

然后我不断得到:

<apples>peas</apples>
<oranges>peas</oranges>
<bananas>peas</bananas>
<pears>peas</pears>
<apples>carrots</apples>
<oranges>carrots</oranges>
<bananas>carrots</bananas>
<pears>carrots</pears>
ect....

而不仅仅是

<apples>peas</apples>
<oranges>carrots</oranges>
<bananas>broccoli</bananas>
<pears>beans</pears>

我的印象是我需要一个嵌套的 for 循环,所以我有这样的东西。

for line in file:
    for x in tagList:
        outputFile.write("<"+x+">"+line+"</"+x+">\n")

我完全理解为什么事情会变成现在这样,我只是对如何解决它感到迷茫。 我发现了其他关于以相同速率迭代 2 个列表的帖子,但似乎找不到任何关于以相同速率迭代文件和列表中的行的内容。 任何帮助将不胜感激。 谢谢!!!

不确定这里关于回答家庭作业的政策是什么,但我会解释你的代码在做什么,以防万一:

它的工作方式与您编码的方式完全相同。

您嵌套了一个 for 循环(文件中的 tagList)。

所以你本质上做的是遍历文件,如果有 4 个项目,在每个点 (1-4) 你再次循环遍历 tagList(它有 4 个项目)。

所以在第一步,你得到了豌豆(来自文件),但在你可以输出它之前,你进入另一个 for 循环(tagList),一旦你在那里,你将输出“豌豆”。

然后第二个 for 循环将再进行 3 次,您将获得总共 4 个“豌豆”。 迭代完成后,您将返回第一个 for 循环并移动到下一个元素,这次将输出胡萝卜。

希望这能解释你在这里做什么。

Unutbu 是正确的 - zip 在这里最容易使用。

>>> lista = ['a', 'b', 'c', 'd']
>>> listb = [1, 2, 3, 4]
>>> for a, b in zip(lista, listb):
    print a, b

a 1
b 2
c 3
d 4

嵌套的 for 循环看起来像这样,并且基本上会将您的列表相乘 - 我认为这不是您想要的。

>>> for a in lista:
    for b in listb:
        print a, b


a 1
a 2
a 3
a 4
b 1
b 2
...

另一种方法是使用列表索引,尽管由于 Python 具有 zip 功能,您最好使用它。

>>> for i in range(4):
    print lista[i], listb[i]


a 1
b 2
c 3
d 4
    python 3.2
    list comprehension

    >>> [["<"+v+">"+i+"</"+v+">"] for i in st for v in tag]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM