Python,匹配单词的第一个字母和最后一个字母

Python,匹配单词的第一个字母和最后一个字母,python,fuzzy-search,Python,Fuzzy Search,下面是在“listb.txt”中选择一个单词的部分代码 这句话的第二部分给了我一个问题。它可以根据第一个字符选择一个单词。。。但只要你说“和”最后一个字,它就会抱怨。示例为“mthr”,它必须定位M或r。 Num是它在文件中查找匹配项的行,/2是因为文件中的单词之间有空格,所以它选择正确的一行 这应该是所有需要的信息。。。 有人有主意吗? 谢谢 以open('listb.txt','r')作为f的: x=1 对于f中的行: 如果x==num/2和len(sms\u word)首先,您可以使用枚举

下面是在“listb.txt”中选择一个单词的部分代码 这句话的第二部分给了我一个问题。它可以根据第一个字符选择一个单词。。。但只要你说“和”最后一个字,它就会抱怨。示例为“mthr”,它必须定位MrNum是它在文件中查找匹配项的行,/2是因为文件中的单词之间有空格,所以它选择正确的一行

这应该是所有需要的信息。。。 有人有主意吗? 谢谢

以open('listb.txt','r')作为f的
:
x=1
对于f中的行:

如果x==num/2和len(sms\u word)首先,您可以使用
枚举来简化代码:

for x, line in enumerate(f, 1):
其次,您可以使用
startswith
endswith
测试字符串:

if (x == num / 2 and
    len(sms_word) <= len(line) < 2 * len(sms_word) and 
    line.startswith(sms_word[0]) and 
    line.endswith(sms_word[-1])):

如果
行太长,那就
!我必须把它浓缩一下吗?这可能就是它变得混乱的原因吗@ThiefMaster请发布样本输入和预期输出计算机没有长线问题。试图破译你的代码的人(包括你)会遇到问题。
if (x == num / 2 and
    len(sms_word) <= len(line) < 2 * len(sms_word) and 
    line.startswith(sms_word[0]) and 
    line.endswith(sms_word[-1])):
line = line.strip()