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

在Pandas中使用正则替换化妆品成分数据中数字间的逗号为连字符

解决化妆品成分数据中数字间逗号替换为连字符的正则问题

需求说明

仅替换化学表达式里数字之间的逗号(,)为连字符(-),保留作为成分分隔符的逗号。

解决方案

使用正则断言精准定位数字间的逗号,结合Pandas的str.replace完成批量替换:

import pandas as pd

# 原始输入数据
x = pd.Series([
    '6,7- dihydro-1,1,2,3,3-pentamethyl-4(5h)-indanone',
    'steareth-10, polyacrylamide c1,14 isoparaffin, laureth-7, propylene glycol, hydrolyzed soy protein, aloe barbadensis, 1,2-hexanediol'
])

# 执行替换
processed_data = x.str.replace(r'(?<=\d),(?=\d)', '-')

# 输出结果
for line in processed_data:
    print(line)

正则逻辑解释

  • (?<=\d):反向肯定断言,确保逗号前一位是数字
  • ,(?=\d):正向肯定断言,确保逗号后一位是数字
    这种写法能精准匹配所有数字间的逗号,完全不会误替换成分列表里的分隔逗号。

对之前尝试的说明

你之前用str.contains或str.findall的思路偏了——这类方法是用来检测/提取内容的,而非直接执行替换。另外你写的多分支匹配连续数字逗号的正则,既不通用(无法覆盖任意长度的数字逗号链),也容易漏匹配。用断言的方式才是最简洁通用的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 20:00:58