我有2个文件。第一行包含2000000行,每行包含一个单词及其前面的词性标记。第二行包含一些单词,每行包含一行。我必须检查第一个文件中是否存在第二个文件的单词。如果它存在,我必须在该单词前面添加一个“WSD”标记,否则,只需写入该行而不做任何更改。我编写的代码有效,但它打印每行超过50次。如何更改它以便它只写一行?
with open ("c:/python34/h.txt", encoding="utf-8") as f1:
f1=f1.readlines()
with open ("c:/python34/WSD.txt", encoding="utf-8") as f2:
f2=f2.read().split()
with open ("result.txt", "w", encoding="utf-8") as f3:
for line in f1:
for i in f2:
if i in line:
line = line + "\t\t\t\t" + "WSD"
else:
line = line
f3.write(line + "\n")
f3.write(" ")
语言是波斯语。 第一个文件的片段:
ستارهشناسانN_PL ميگويندV_PRS كهCON بادNOUN ممكنADJ_SIM استV_PRE اولينADJ_SUP
答案 0 :(得分:1)
一些事情。
我为你重新编写并简化了它。
with open ("c:/python34/h.txt", encoding="utf-8") as f1:
f1=f1.readlines()
with open ("c:/python34/WSD.txt", encoding="utf-8") as f2:
f2=f2.read().split()
with open ("result.txt", "w", encoding="utf-8") as f3:
for line in f1:
for i in f2:
if i in line:
line = line + "\t\t\t\t" + "WSD"
f3.write(line + "\n")
还有一件事。你有这个代码的方式,WSD被添加到行的末尾,而不是像你说的那样在单词的前面。
当在一行中找到多个单词时,您还应该考虑程序的行为。正如当前编写的那样,当发生这种情况时,WSD将被多次添加。