Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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_Regex_List_Search - Fatal编程技术网

在python列表中搜索单词的其余部分

在python列表中搜索单词的其余部分,python,regex,list,search,Python,Regex,List,Search,用户将键入一个输入字段。在他们键入每个字母后,它将在列表中搜索单词的其余部分。例如,如果用户键入Ar和列表=[“Arial”、“Cat”、“Pie”、“Terminal”],它将用Arial替换他们键入的内容,因为前两个字母匹配。 现在请记住,我对python比较陌生,所以我没有正则表达式。我能处理“改变”这个词等等。我只需要搜索列表的帮助 代码如下: fonts = ["Arial","Calibri","Cambria","Cambria Math","Candara","Comic San

用户将键入一个输入字段。在他们键入每个字母后,它将在列表中搜索单词的其余部分。例如,如果用户键入
Ar
列表=[“Arial”、“Cat”、“Pie”、“Terminal”]
,它将用
Arial
替换他们键入的内容,因为前两个字母匹配。 现在请记住,我对python比较陌生,所以我没有正则表达式。我能处理“改变”这个词等等。我只需要搜索列表的帮助

代码如下:

fonts = ["Arial","Calibri","Cambria","Cambria Math","Candara","Comic Sans MS","Consolas","Constantia","Corbel","Courier","Courier New","Fixedsys","Franklin Gothic","Gabriola","Georgia","Impact","Lucida Console","Lucida Sans Unicode","Modern","MS Sans Serif","MS Serif","Palatino Linotype","Roman","Segoe Print","Segoe Script","Segoe UI","Segoe UI Symbol","Small Fonts","Small Fonts","System","Tahoma","Terminal","Times New Roman","Trebuchet MS","Verdana"]

def findfontname(event):
       #Search list:
       for item in fonts:
           if item == findfont.get(0,END):
               print("Found")

findfont.bind("<Key>", findfontname)
fonts=[“Arial”、“Calibri”、“Cambria”、“Cambria Math”、“Candara”、“Comic Sans MS”、“Consolas”、“Constantia”、“Corbel”、“Courier”、“Courier New”、“Fixedsys”、“Franklin Gothic”、“Gabriola”、“Georgia”、“Impact”、“Lucida Console”、“Lucida Sans Unicode”、“Modern”、“MS Sans Serif”、“MS Serif”、“Palatino Linotype”、“Roman”、“Segoe Print”、“Segoe脚本”、“Segoe UI”,“Segoe用户界面符号”、“小字体”、“小字体”、“系统”、“塔荷马”、“终端”、“泰晤士报新罗马”、“投石机MS”、“Verdana”]
def findfontname(事件):
#搜索列表:
对于字体中的项目:
如果item==findfont.get(0,END):
打印(“找到”)
findfont.bind(“,findfontname)

您可以使用中的
检查某个文本是否在其他文本的任何位置

fonts = ["Arial","Calibri","Cambria","Cambria Math","Candara","Comic Sans MS","Consolas","Constantia","Corbel","Courier","Courier New","Fixedsys","Franklin Gothic","Gabriola","Georgia","Impact","Lucida Console","Lucida Sans Unicode","Modern","MS Sans Serif","MS Serif","Palatino Linotype","Roman","Segoe Print","Segoe Script","Segoe UI","Segoe UI Symbol","Small Fonts","Small Fonts","System","Tahoma","Terminal","Times New Roman","Trebuchet MS","Verdana"]

text = findfont.get(0,END):
text = text.lower()

for item in fonts:
    if text in item.lower():
       print("Found")
如果搜索以其他文本开头的文本,可以使用
startswith()

text = findfont.get(0,END):
text = text.lower()

for item in fonts:
    if item.lower().startswith(text):
       print("Found")

我不知道你剩下的代码是什么样子的,但希望我能给你一个有用的演示。就我理解你的问题而言,你想检查字体列表中的字符串是否以给定的子字符串开头

>>> fonts = ["Arial","Calibri","Cambria","Cambria Math"]
>>> sub = 'xYz' # there should be no match for this
>>> sub = sub.lower() # convert to lowercase
>>> [x for x in fonts if x.lower().startswith(sub)]
[]
因此,第一个示例返回一个空列表,在布尔上下文中,该列表的计算结果为
False

>>> sub = 'Ar'
>>> sub = sub.lower()
>>> [x for x in fonts if x.lower().startswith(sub)]
['Arial']
这将返回一个结果,因此您现在应该能够显示“Arial”。当用户输入以C开头的内容时,会出现问题

>>> sub = 'cA'
>>> sub = sub.lower()
>>> [x for x in fonts if x.lower().startswith(sub)]
['Calibri', 'Cambria', 'Cambria Math']
如您所见,有三种可能的匹配。现在由您的设计决定是显示所有匹配项,还是在只有一个匹配项之前不显示任何内容。如果您希望使用后一种选项,您可以发布如下内容:

matches = [x for x in fonts if x.lower().startswith(sub)]
if len(matches) == 1: # exactly one match
    match = matches[0]
    # code to display the match

<>最后注意:如果你的字体列表变大,考虑把它变成一个“代码> SET/CODE”。< /P>这个问题与列表上的TKTET-查找文本无关,是正常的Python问题。@ Furas是抱歉的,因为它涉及GUI输入字段。在< /代码>中使用<代码>检查是否有文本在其他文本内。
=
开始,如果用户输入“ca”,您希望有什么行为?我认为OP正在尝试实现某种形式的自动完成功能,因此中的
不会有帮助。我当然可能是错的,但这就是我理解问题的方式。@furas感谢它工作得很好,而且我在.get(0,END)中遇到了一个错误对许多参数说,因此我删除了(0,END)现在它工作得很好!如果
findfont
StringVar
,那么它使用不同的功能,然后
Text
小部件。@furas in不幸不能正常工作,但我发现了它,谢谢你的帮助!这工作非常完美,我尝试在中使用,但没有正确工作,谢谢!@cdw100100在
中使用
失败,因为e、 例如,当用户以“m”开始输入时,“Cambria”中的
'm
将返回
True
。是的,这确实发生了