簡體   English   中英

加快字符串列表上的re.match()?

[英]speed up re.match() on a list of string?

假設s是一長串字符串。 我想提取與正則表達式匹配的列表中元素的索引。 但是,當列表很長時,運行時間可能會很慢。 有沒有辦法加快搜索速度?

regex = re.compile('^x.*$')
result = [i for i,v in enumerate(s) if regex.match(v)]

如果您只想檢查字符串是否以“ x”開頭,則可以使用startswith

result = [i for i, v in enumerate(s) if v.startswith("x")]

$ python -m timeit -n 1000 -s 'import re; regex = re.compile("^x.*$");' '[i for i,v in enumerate(["xax", "y", "xaff"]) if regex.match(v)]'
1000 loops, best of 3: 1.62 usec per loop
$ python -m  timeit -n 1000 '[i for i, v in enumerate(["xax", "y", "xaff"]) if v.startswith("x")]'
1000 loops, best of 3: 1.17 usec per loop

將列表拆分為多個塊,然后使用python多處理或多線程處理。 找到每個塊的匹配索引,然后將每個塊開頭的索引添加到匹配項中,以使最終索引與列表中的整體索引匹配。

暫無
暫無

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

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