Python 搜索完整的子字符串是否在字符串中而不是其一部分
我有一个问题,“in”运算符没有搜索字符串的完整子字符串,但如果字符串中有任何连续字符,则返回true 例如,对于给定的列表定义的图形页面名称列表['118-SB710'、'66kV FIH GIS'、'MCC800'、'MCC849'],我正在搜索文件夹中的所有文件名,并比较列表内容是否是文件名的一部分 其中一个文件名是“415V FI MCC849进线”。问题是,尽管列表中有MCC849,“MCC”也在列表中,因此存在文件混淆和创建重复文件等情况 换句话说,文件名是Python 搜索完整的子字符串是否在字符串中而不是其一部分,python,Python,我有一个问题,“in”运算符没有搜索字符串的完整子字符串,但如果字符串中有任何连续字符,则返回true 例如,对于给定的列表定义的图形页面名称列表['118-SB710'、'66kV FIH GIS'、'MCC800'、'MCC849'],我正在搜索文件夹中的所有文件名,并比较列表内容是否是文件名的一部分 其中一个文件名是“415V FI MCC849进线”。问题是,尽管列表中有MCC849,“MCC”也在列表中,因此存在文件混淆和创建重复文件等情况 换句话说,文件名是C:\temp\MCC80
C:\temp\MCC800\415V-FI-MCC849 Incomer
,但我希望它是C:\temp\MCC849\415V-FI-MCC849 Incomer
我想搜索整个单词,而不仅仅是列表中的连续字符
任何帮助都将不胜感激
代码如下:
Page_name = '415V FI MCC849 Incomer'
graphic_pages_name_list = ['118-SB710', '66kV FIH GIS','MCC800', 'MCC849']
for name in graphic_pages_name_list:
path = ('C:\\temp\\' + name + '\\')
if name in Page_name:
File_name = (path + '%s' % (Page_name))
您可以使用regex单词边界。我已将其全部加入一个大正则表达式(\bstring\b)|。。。要测试字符串,请执行以下操作:
rex = re.compile("|".join(list(map(lambda x: "(\\b"+x+"\\b)", graphic_pages_name_list)))).match(Page_name)
您可以使用regex单词边界。我已将其全部加入一个大正则表达式(\bstring\b)|。。。要测试字符串,请执行以下操作:
rex = re.compile("|".join(list(map(lambda x: "(\\b"+x+"\\b)", graphic_pages_name_list)))).match(Page_name)
您的代码已生成所需的输出:
>>> Page_name = '415V FI MCC849 Incomer'
>>> graphic_pages_name_list = ['118-SB710', '66kV FIH GIS','MCC800', 'MCC849']
>>>
>>> for name in graphic_pages_name_list:
... path = ('C:\\temp\\' + name + '\\')
... if name in Page_name:
... File_name = (path + '%s' % (Page_name))
...
>>> File_name
'C:\\temp\\MCC849\\415V FI MCC849 Incomer'
找出示例代码与实际运行的代码之间的差异,并将其消除。您的代码已生成所需的输出:
>>> Page_name = '415V FI MCC849 Incomer'
>>> graphic_pages_name_list = ['118-SB710', '66kV FIH GIS','MCC800', 'MCC849']
>>>
>>> for name in graphic_pages_name_list:
... path = ('C:\\temp\\' + name + '\\')
... if name in Page_name:
... File_name = (path + '%s' % (Page_name))
...
>>> File_name
'C:\\temp\\MCC849\\415V FI MCC849 Incomer'
找出示例代码与实际运行的代码之间的差异,并将其消除。“if(Page\u name中的名称):”=>
if(name==Page\u name):
这是您想要的吗?此人需要单词边界匹配,以便MCC与上面的MCC849不匹配。“if(Page\u name中的名称):”=>if(name==Page\u name):
这是您想要的吗?此人需要单词边界匹配,因此MCC与上面的MCC849不匹配。