Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在只知道某些字符的情况下在单词列表中查找单词_Python_String - Fatal编程技术网

Python 如何在只知道某些字符的情况下在单词列表中查找单词

Python 如何在只知道某些字符的情况下在单词列表中查找单词,python,string,Python,String,因此,我有一个包含3个单词的单词列表: Apple Christmas Tree Shopping Bag 我只知道单词中的某些字符和单词的长度,例如: ?i?as?r 其中,?表示它是一个未知字符,我想在控制台中键入它,并获得单词列表中包含这些字符的所有单词的输出,这些字符位于这些位置,并且有这么多字符 我有什么办法可以做到这一点吗?我希望我的程序以同样的方式工作。您可以将表达式转换为正则表达式,并尝试与之匹配: import re words = [ 'Apple', '

因此,我有一个包含3个单词的单词列表:

Apple
Christmas Tree
Shopping Bag
我只知道单词中的某些字符和单词的长度,例如:

?i?as?r

其中,表示它是一个未知字符,我想在控制台中键入它,并获得单词列表中包含这些字符的所有单词的输出,这些字符位于这些位置,并且有这么多字符


我有什么办法可以做到这一点吗?我希望我的程序以同样的方式工作。

您可以将表达式转换为正则表达式,并尝试与之匹配:

import re

words = [
    'Apple',
    'Christmas Tree',
    'Shopping Bag'
]

match = '???i???as ?r??'
regex = '^' + match.replace('?', '.') + '$'  # turn your expression into a proper regex

for word in words:    # go through each word
    if re.match(regex, word):   # does the word match the regex?
        print(word)
输出:

Christmas Tree

如果列表中有
str
,请尝试

IF "str" IN [list]
如果您有一个小单词列表,那么您可以对整个单词列表运行正则表达式扫描。将查询字符串转换为正则表达式,就可以开始了

否则,您可以将单词列表组织成块,例如,相当于将其拆分为不同目录中的多个文件:

Appl => [ Apple ]
Chri => [ Christchurch, Christmas Tree, ... ]
Shop => [ Shopper, Shopping Bag, Shopkeeper, ]
(可以有多个级别)

由于您的搜索查询似乎是锚定的,即您知道它从单词的开头开始,当您查找“?i???as?r???”时,您会看到“?i”将只匹配“Chri”,并且只在该子列表中查找


(事实上,如果你必须多次这样做,你最好构建一个递归搜索,并将列表组织为一个-以下是一些)。

你听说过吗?这不适用于这个问题,因为没有
“str”
可以搜索。。。OP表示他只知道一些需要出现的角色。运算符中的
正在查找精确相等