首页 > 解决方案 > 如何与python并行读取两个文件?

问题描述

我有两个非常长的文件(超过 100 万行),它们的行数完全相同,并且行彼此逐行对应。我想逐行并行读取这两个文件,并根据行的内容编写一个新文件。

更具体地说,第一个文件看起来像

<text id="Jamilja03" title="Жамиля" title_english="Jamilja" year="1959" genre="novelette" author="Chyngyz Aitmatov>
<s>
Жамийла
Ар
дайым
бир
жакка
жол
жүрөрдө
,
мен
ушул
алкагы
жөнөкөй
жыгачтан
жасалган
сүрөттүн
алдына
келип
турам
.
</s>

第二个文件看起来像

<^text/*text$ ^id/*id$=^"/"<quot>$^Jamilja03/*Jamilja03$^"/"<quot>$ ^title/*title$=^"/"<quot>$^Жамиля/*Жамиля$^"/"<quot>$ ^title/*title$_^englis/*english$=^"/"<quot>$^Jamilja/*Jamilja$^"/"<quot>$ ^year/*year$=^"/"<quot>$^1959/1959<num>$^"/"<quot>$ ^genre/*genre$=^"/"<quot>$^novelette/*novelette$^"/"<quot>$ ^author/*author$=^"/"<quot>$^Chyngyz/Chyngyz<np><unk>$ ^Aitmatov/*Aitmatov$>
<^s/*s$>
^Жамийла/*Жамийла$
^Ар дайым/ар дайым<adv>$
^бир/бир<num>$
^жакка/жак<n><dat>$
^жол/жол<adv>$
^жүрөрдө/жүр<v><iv><ger_fut><loc>$
^,/,<cm>$
^мен/мен<prn><pers><p1><sg><nom>$
^ушул/ушул<det><dem>$
^алкагы/алкак<n><px3sp><nom>$
^жөнөкөй/жөнөкөй<adj>$
^жыгачтан/жыгач<n><abl>$
^жасалган/жаса<v><tv><pass><prc_past>$
^сүрөттүн/сүрөт<n><gen>$
^алдына/алд<n><px3sp><dat>$
^келип/кел<v><iv><prc_perf>$
^жүрөрдө/жүр<v><iv><ger_fut><loc>$
^,/,<cm>$
^мен/мен<prn><pers><p1><sg><nom>$
^ушул/ушул<det><dem>$
^алкагы/алкак<n><px3sp><nom>$
^жөнөкөй/жөнөкөй<adj>$
^жыгачтан/жыгач<n><abl>$
^жасалган/жаса<v><tv><pass><prc_past>$
^сүрөттүн/сүрөт<n><gen>$
^алдына/алд<n><px3sp><dat>$
^келип/кел<v><iv><prc_perf>$
^турам/тур<vaux><aor><p1><sg>$
^./.<sent>$
<^///<sent>$^s/*s$>

我想一般使用第二个文件中的行(进行一些重新格式化),但要在某些行中保留 XML 标记,其中包含来自第一个文件的 XML 标记的 XML 标记。

一种天真的方法,例如

for line_a in file_a and line_b in file_b:

不适用于python。

已经有一个类似标题的问题,即如何在 python 中逐行并行读取两个文件,但建议的答案(将一个文件读入列表或字典)不适合我的任务。我真的很想从这两个文件中读取这些行,然后决定进一步处理,然后忘记它们。

标签: pythonfor-loopfile-ionlp

解决方案


使用zip已经是生成器的文件:

for la, lb in zip(file_a, file_b):
    ...

推荐阅读