簡體   English   中英

搜索完整的 substring 是否在字符串中而不是它的一部分

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM