python - 在 python 中识别字符串中的子字符串的最有效方法?

标签 python string fuzzy-search

我需要在相当长的字符串中搜索 CPV(通用采购词汇)代码。

目前我正在用一个简单的 for 循环和 str.find() 来做这件事

问题是,如果 CPV 代码以稍微不同的格式列出,则该算法将找不到它。

在字符串中搜索代码的所有不同迭代的最有效方法是什么?是否只是将最多 10,000 个 CPV 代码中的每一个重新格式化并为每个实例使用 str.find() 的情况?

不同格式的示例如下

30124120-1 
301241201 
30124120 - 1
30124120 1
30124120.1

等等

谢谢:)

最佳答案

尝试正则表达式:

>>> cpv = re.compile(r'([0-9]+[-\. ]?[0-9])')
>>> print cpv.findall('foo 30124120-1 bar 21966823.1 baz')
['30124120-1', '21966823.1']

(修改直到它与您数据中的 CPV 紧密匹配。)

关于python - 在 python 中识别字符串中的子字符串的最有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4672868/

相关文章:

python - 开泰结构 : calculated instances with a condition

string - 为什么我不能将两个字符串连接在一起,但我可以连接一个字符串和一个 &str?

使任意字符串成为有效文件名的Python函数

search - 模糊搜索 + 倒排索引

elasticsearch - 在Elasticsearch中使用Levenshtein算法进行模糊字符串匹配

elasticsearch - 精确匹配和模糊性...什么是好方法?

python - 使用 os.path 非常冗长有没有更简洁的方法来操作路径

python - pandas groupby 并进行分类排序以删除重复项

python - 调用 URL 时 Python 中的非 ASCII 字符语法错误

java - 字符串中的单词-如何删除