[英]Searching if the complete substring is in string not part of it
我有一个问题,'in' 运算符没有搜索字符串的完整 substring,但如果字符串中有任何连续字符,则返回 true。
例如,对于给定列表定义的graphic_pages_name_list ['118-SB710','66kV FIH GIS','MCC800','MCC849'],我正在搜索文件夹中的所有文件名并比较列表的内容是否属于文件名。
一个这样的文件名是“415V FI MCC849 Incomer”。 问题是,虽然 MCC849 在列表中,但“MCC”也在列表中,因此存在文件混淆和创建重复等情况。
换句话说,文件名是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))
您可以使用正则表达式单词边界。 我已将它们全部加入一个大的正则表达式 (\bstring\b)|... 以测试字符串:
rex = re.compile("|".join(list(map(lambda x: "(\\b"+x+"\\b)", graphic_pages_name_list)))).match(Page_name)
您的代码已经生成了所需的 output:
>>> 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'
找出您的示例代码和您实际运行的代码之间的差异,并消除它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.