首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python unicode搜索未给出正确答案

Python unicode搜索未给出正确答案
EN

Stack Overflow用户
提问于 2012-04-07 18:40:47
回答 3查看 201关注 0票数 1

我正在尝试搜索在file-1中每个文件包含一行的印地语单词,并在file-2的行中找到它们。我必须打印行号和找到的字数。代码如下:

代码语言:javascript
复制
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

这是找到一些单词,但忽略其他一些输入文件是: File-1:

代码语言:javascript
复制
पौधा  
वनस्पति

文件2:

代码语言:javascript
复制
वनस्पति, पेड़-पौधा  
वस्तु-भाग, वस्तु-अंग, वस्तु_भाग, वस्तु_अंग  
पादप_समूह, पेड़-पौधे, वनस्पति_समूह  
पेड़-पौधा

这将给出输出:

代码语言:javascript
复制
0 1  
3 1

显然,它忽略了वनस्पति,只搜索पौधा。我也尝试过其他输入。它只搜索一个单词。你知道怎么纠正这个问题吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-07 19:20:11

这是因为您没有删除行尾的"\n“字符。所以你不用搜索"some_pattern\n",而不是"some_pattern“。使用strip()函数像这样将它们切掉:

代码语言:javascript
复制
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
票数 0
EN

Stack Overflow用户

发布于 2012-04-07 18:59:03

我认为问题出在这里:

代码语言:javascript
复制
words = codecs.open("hypernyms_en2hi.txt", "r", "utf-8").readlines()

.readlines()将在末尾保留换行符,因此您搜索的不是पौधा,而是पौधा\n,并且只能在行尾匹配。如果我改用.read().split(),我会得到

代码语言:javascript
复制
0   2
2   1
3   1
票数 1
EN

Stack Overflow用户

发布于 2012-04-07 19:33:58

放上这段代码,你就会明白为什么会发生这种情况,因为有空格:在文件1中,第一个单词是पौधा空格...

代码语言:javascript
复制
for i in hypernyms:
    print "file1",i

for i in words:
    print "file2",i

在count_arr = []之后和计数器之前,第...行...

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10053756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档