Python中如何按自定义字典将西班牙文数字词组替换为对应阿拉伯数字
西班牙文数字词组替换阿拉伯数字实现方案
问题根源
原有代码将输入字符串按空格拆分为单个单词后逐个匹配字典,但字典的key都是多单词组成的完整数字词组,单个单词无法命中对应key,所以无法完成预期替换。另外注意代码中调用的字典变量名是dic_letras,和实际定义的字典名dic不一致,也会导致匹配失败。
解决方案
直接遍历字典的key对完整字符串做子串替换即可,不需要拆分字符串,避免破坏词组结构:
# 替换用字典 dic = { 'TREINTA Y UNO':'31', 'TREINTA Y DOS':'32', 'TREINTA Y TRES':'33', 'TREINTA Y CUATRO':'34', 'TREINTA Y CINCO':'35', 'TREINTA Y SEIS':'36', 'TREINTA Y SIETE':'37', 'TREINTA Y OCHO':'38', 'TREINTA Y NUEVE':'39' } v1 = 'TREINTA Y DOS' # 输入示例 sal = v1 for key, val in dic.items(): sal = sal.replace(key, val) print(sal) # 输出 32,符合预期
如果后续字典扩展存在长短key重叠的情况(比如同时有TREINTA和TREINTA Y DOS两个key),可以先将key按长度降序排序后再遍历替换,避免短key先替换破坏长key的完整性:
for key, val in sorted(dic.items(), key=lambda x: len(x[0]), reverse=True): sal = sal.replace(key, val)
内容的提问来源于stack exchange,提问作者Alberto
相关产品推荐
相关产品推荐

