簡體   English   中英

在字符串中搜索不同的子字符串

[英]Searching string for different substrings

我有一個字符串。 我需要知道以下任何子字符串是否出現在字符串中。

所以,如果我有:

thing_name = "VISA ASSESSMENTS"

我一直在用以下方法進行搜索:

any((_ in thing_name for _ in ['ASSESSMENTS','KILOBYTE','INTERNATIONAL']))

我正在查看一長串的thing_name項目,並且我不需要過濾,只需檢查任何數目的子字符串即可。

這是最好的方法嗎? 感覺不對,但是我想不出更有效的方法來實現這一目標。

您可以嘗試re.search看看是否更快。 遵循以下原則

import re
pattern = re.compile('|'.join(['ASSESSMENTS','KILOBYTE','INTERNATIONAL']))
isMatch = (pattern.search(thing_name) != None)

如果您的子字符串列表很小並且輸入很小,那么使用for循環進行比較就可以了。

否則,我知道在字符串中搜索(大)子字符串列表的最快方法是構造單詞列表的DAWG,然后遍歷輸入字符串,保留DAWG遍歷列表,並在每次成功遍歷時注冊子字符串。

另一種方法是將所有子字符串添加到哈希表,然后在遍歷輸入字符串時對每個可能的子字符串(最長的子字符串的長度)進行哈希處理。

自從我在python中工作以來已經有一段時間了,我的記憶是實現東西很慢。要走DAWG路線,我可能會將其實現為一個本機模塊,然后從python中使用它(如果可能) 。 否則,我會做一些速度檢查以首先進行驗證,但可能會走哈希表路線,因為python中已經有高性能的哈希表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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