首先感谢 https://www.icode9.com/content-1-290270.html
最近在做爬虫的时候遇到一个问题:
抓取到的网页源码部分数据如下:
<td width="308px"><div title="139798.5564万美$元">139798.5564万美$元</div>
经过测试,中间的符号是随机的。而我们的需求是把货币单位转成字母缩写,
虽然问题不大,可以通过replace的方式替换,但是如果符号种类特别多的时候,就会显得非常麻烦。
于是乎想到用字典加正则的方式来解决这个问题,但用正则表示字典的key,还真没有操作过。
在找了一些资料之后,发现了这个方法,很好解决了需求问题
from re import search, I
class RegexMap:
def __init__(self, n_dic, val):
self._items = n_dic
self.__val = val
def __getitem__(self, key):
for regex in self._items.keys():
if search(regex, key, I):
return self._items[regex]
return self.__val
使用例子:
fee_dic = {r'.*?美.*?元.*?': 'USD'}
reg_fee_dic = RegexMap(fee_dic, None)
print(reg_fee_dic['*美元'])
print(reg_fee_dic['美^元'])
print(reg_fee_dic['美元%'])
print(reg_fee_dic['人民币'])
# 输出:
'USD'
'USD'
'USD'
None