gpt4 book ai didi

python - 快速检查 Markdown 中单词的方法?

转载 作者:行者123 更新时间:2023-12-01 07:34:07 24 4
gpt4 key购买 nike

我想扫描文本以查找单词列表中是否存在单词。如果文本未格式化,这将很简单,但它是 Markdown 格式的。目前,我正在使用正则表达式来完成此任务:

import re

text = 'A long text string with **markdown** formatting.'
words = ['markdown', 'markup', 'marksideways']
found_words = []

for word in words:
word_pattern = re.compile(r'(^|[ \*_])' + word + r'($|[ \*_.!?])', (re.I | re.M))
match = word_pattern.search(text)
if match:
found_words.append(word)

我正在处理一个非常长的单词列表(一种拒绝列表)和非常大的候选文本,因此速度对我来说很重要。这是一种相对有效且快速的方法吗?有更好的方法吗?

最佳答案

您是否考虑过去掉前导星号和尾随星号?

import re

from timeit import default_timer as timer


text = 'A long text string with **markdown** formatting.'
words = ['markdown', 'markup', 'marksideways']

def regexpCheck(words, text, n):
found_words = []

start = timer()
for i in range(n):
for word in words:
word_pattern = re.compile(r'(^|[ \*_])' + word + r'($|[ \*_.!?])', (re.I | re.M))
match = word_pattern.search(text)
if match:
found_words.append(word)

end = timer()
return (end - start)


def stripCheck(words, text, n):
found_words = []

start = timer()
for i in range(n):
for word in text.split():
candidate = word.strip('*')
if candidate in words:
found_words.append(candidate)
end = timer()

return (end - start)


n = 10000
print(stripCheck(words, text, n))
print(regexpCheck(words, text, n))

在我的运行中,速度快了大约一个数量级:

0.010649851000000002
0.12086547399999999

关于python - 快速检查 Markdown 中单词的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57080072/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com