我正在尝试搜索文件-1中每个文件包含一行的印地语单词,并在文件-2中的行中找到它们。我必须用找到的单词数打印行号。 这是代码:
import codecs
hypernyms = codecs.open("hindi_hypernym.txt", "r", "utf-8").readlines()
words = codecs.open("hypernyms_en2hi.txt", "r", "utf-8").readlines()
count_arr = []
for counter, line in enumerate(hypernyms):
count_arr.append(0)
for word in words:
if line.find(word) >=0:
count_arr[counter] +=1
for iterator, count in enumerate(count_arr):
if count>0:
print iterator, ' ', count
这是找到一些词,但忽略了其他一些词 输入文件是: 文件-1:
पौधा
वनस्पति
文件-2:
वनस्पति, पेड़-पौधा
वस्तु-भाग, वस्तु-अंग, वस्तु_भाग, वस्तु_अंग
पादप_समूह, पेड़-पौधे, वनस्पति_समूह
पेड़-पौधा
这给出了输出:
0 1
3 1
显然,它忽略了वनस्पति并只搜索पौधा。我也尝试过其他输入。它只搜索一个单词。知道怎么纠正这个吗?
答案 0 :(得分:1)
我认为问题在于:
words = codecs.open("hypernyms_en2hi.txt", "r", "utf-8").readlines()
.readlines()
会在结尾处留下换行符,因此您不会搜索पौधा,而是搜索पौधा\n
,并且您只会在一行的末尾匹配。如果我改用.read().split()
,我会
0 2
2 1
3 1
答案 1 :(得分:0)
那是因为你没有删除行尾的“\ n”字符。 所以你不要搜索“some_pattern \ n”,而不是“some_pattern”。 使用strip()函数将它们切掉:
import codecs
words = [word.strip() for word in codecs.open("hypernyms_en2hi.txt", "r", "utf-8")]
hypernyms = codecs.open("hindi_hypernym.txt", "r", "utf-8")
count_arr = []
for line in hypernyms:
count_arr.append(0)
for word in words:
count_arr[-1] += (word in line)
for count in enumerate(count_arr):
if count:
print iterator, ' ', count
答案 2 :(得分:0)
把这段代码放在一起,你会发现为什么会这样,因为空格: 在文件1中,第一个单词是पौधा[space] ....
for i in hypernyms:
print "file1",i
for i in words:
print "file2",i
在count_arr = []之后,在counter之前,行......