更准确的替代findline?

2024-09-29 23:25:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一张单子(文字.txt)我需要一个比findline更精确的搜索方法。你知道吗

我当前的函数(显示在底部)使用findline搜索列表。问题是:findline不返回精确匹配,而是返回包含整个单词的第一个字符串,不管后面是否有更好的匹配。你知道吗

示例: 我输入'BEES',findline返回'BAUBEES',因为它是第一个包含子字符串('BEES')的字符串。当然,这完全破坏了功能。你知道吗

我需要的是一个函数或(最好)一个内置方法,它按字母顺序查找以获得精确匹配。因此,如果“蜜蜂”在列表中(我向你保证它是),我希望它返回“蜜蜂”。或者,如果“BAUBEES”和“BEESWAX”是列表中唯一的子字符串匹配,那么理想的函数将返回“BEESWAX”,因为“BEES”中的第二个字母是“E”而不是“A”(如“BAUBEES”)。你知道吗

def iswholeword(word):
    openfile = open('/media/Gianson/Python Programs/words.txt','r')
    linz = openfile.readlines()[:]
    openfile.close()
    hit = findline(word,linz)[:]
    print 'hit', hit
    if len(hit)-1  == len(word):
        return True
    else:
        return False

Tags: 方法函数字符串txt列表字母word蜜蜂
1条回答
网友
1楼 · 发布于 2024-09-29 23:25:14
r = re.compile(r"\b%s" % re.escape(word))
for line in openfile:
    hit = r.search(line)
    if hit:
        # whatever

说明:这将从考虑中的\b(单词边界)和word构建一个正则表达式,然后在文件的每个line中搜索它。它在行中找到以word开头的第一个单词并返回regexp match object。你知道吗

相关问题 更多 >

    热门问题