You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python re模块将字符串中匹配字典键的内容替换为对应值

代码修正方案

原代码错误原因

  • re.sub()的第二个参数仅支持传入字符串或可调用对象,你传入的dictionary[k] for k in dict_comb是生成器表达式,不符合参数要求,且逻辑错误:不需要遍历所有字典键,仅需要对实际匹配到的内容做字典查询即可。
  • 直接拼接字典键没有做长度排序和边界限制,可能出现短键优先匹配、部分内容误匹配的异常情况。

修正后代码

import re

dictionary = {"Januar":"January","Februar":"February","März":"March","April":"April","Mai":"May","Juni":"June",
             "Juli":"July","August":"August","September":"September","Oktober":"October","November":"November",
             "Dezember":"December"}

# 按键长度倒序拼接,避免短键被优先匹配,同时添加单词边界避免部分内容误匹配
dict_comb = r"\b(?:{})\b".format("|".join(sorted(dictionary.keys(), key=lambda x: len(x), reverse=True)))
date = '09 Mai.2022'
# 用lambda表达式接收匹配结果,查询字典返回对应值
dates_fo = re.sub(dict_comb, lambda match: dictionary[match.group()], date)
print(dates_fo)

运行后输出为09 May.2022,符合预期需求。

内容的提问来源于stack exchange,提问作者Aniiya0978

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 22:30:04