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

如何用Python正则表达式移除列表中特定模式的字母g

仅移除数字后独立g的正则替换方案

给定原始列表:

original_list = ['12kg','900g', '2,7kg', '801g', '15', '3,63kg', '1kg']

要实现仅移除<number>g模式的字母g(保留kg中的g),可以使用反向否定环视+结尾匹配的正则表达式,结合列表推导式完成替换:

解决方案代码

import re

original_list = ['12kg','900g', '2,7kg', '801g', '15', '3,63kg', '1kg']
new_list = [re.sub(r'(?<![kK])g$', '', item) for item in original_list]
print(new_list)

运行后得到目标列表:

['12kg', '900', '2,7kg', '801', '15', '3,63kg', '1kg']

正则表达式解释

  • (?<![kK]):反向否定环视,确保匹配的g前面不是k或K,避免误删kg里的g
  • g$:匹配字符串结尾的g,保证只处理以g结尾且符合前面条件的内容

分析你之前的尝试问题

  • [^kK]g:这个表达式会匹配「任意非k/K字符+g」,比如900g里的0g会被整体匹配,替换时会把0也删掉,导致结果错误
  • [^kK]g$:同样会匹配「非k/K字符+结尾g」,比如900g的0g,替换后会变成90而不是900,不符合需求
  • [^kK](g):虽然捕获了g,但前面的非k/K字符也会被纳入匹配范围,替换时如果只保留组1的话,虽然在你的列表里可能看起来结果对,但会误处理非数字结尾的g(比如abcg会变成abc),逻辑上没有精准匹配「数字+g」的场景,不如环视方案严谨

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 21:25:23