我需要在一个相当长的字符串中搜索cpv(common procurement vocab)代码。
目前,我正在使用一个简单的for循环和str.find()执行此操作
问题是,如果cpv代码以稍微不同的格式列出,则此算法找不到它。
搜索字符串中所有不同代码迭代的最有效方法是什么这仅仅是重新格式化每个多达10000个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非常匹配。)