gpt4 book ai didi

python - 文本解析设计

转载 作者:行者123 更新时间:2023-12-01 06:12:44 25 4
gpt4 key购买 nike

假设我有一段文字,如下所示:

Snails can be found in a very wide range of environments including ditches, deserts, and the abyssal depths of the sea. Numerous kinds of snail can also be found in fresh waters. (source)

我有 10,000 条正则表达式规则来匹配文本,这些规则可以重叠。例如,正则表达式 /Snails? can/i 将找到两个匹配项(在文本中为斜体)。正则表达式 /can( 也)? be/i 有两个匹配项(粗体)。

迭代我的正则表达式并找到匹配项后,最好使用的数据结构是什么,在文本中给定某个位置,它会返回与其匹配的所有正则表达式?例如,如果我想要第 1 行第 8 个字符(从 0 开始,即 can 中的 a)的匹配项,我将获得之前两个正则表达式的匹配项已描述。

我可以创建一个 HashMap :(键:字符位置,值:所有匹配正则表达式的集合)。这是最优的吗?有没有更好的方法来解析具有数千个正则表达式的文本(不循环遍历每个正则表达式)?

谢谢!

最佳答案

将所有匹配项存储在字典中是可行的,但这意味着您必须同时将所有匹配项存储在内存中。如果您的数据足够小,可以轻松装入内存,请不要担心。只做有效的事情并继续前进。

如果您确实需要减少内存使用量以提高速度,这实际上取决于您使用数据的方式。例如,如果您处理从开头开始一直到结尾的位置,则可以使用 re.finditer 迭代处理所有正则表达式,并且不会在内存中保留超出所需时间的额外匹配项。

关于python - 文本解析设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4855302/

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