首页 > 解决方案 > 如何在 Excel 中替换千位分隔符并在 Python 或 VBA 中保留其他逗号

问题描述

我有一个名为“策略”的列,其中包含如下数据行:

media A,type A,2019-08-29 to 2019-12-31,0.00 CNY ≤ amount ≤ 10,000,000.00 CNY, 10.50%, --;media B,type B,2019-08-29 to 2019-12-31, 0.00元≤金额≤10,000,000.00元,10.50%,--;

它是由逗号分隔的字段值的组合。

现在我想替换“0.00 CNY ≤ amount ≤ 10,000,000.00 CNY”等数字中的所有千位分隔符。我尝试使用正则表达式来替换它们:

df['policy'].replace(to_replace=r'(?<=\d{1,3})\,(?=\d{3})', value='', regex=True)

但是 Python 引发了一个错误,提示“后视需要固定宽度的模式”。

我希望我能得到如下结果:

media A,type A,2019-08-29 to 2019-12-31,0.00 CNY ≤ amount ≤ 10000000.00 CNY, 10.50%, --;media B,type B,2019-08-29 to 2019-12-31, 0.00元≤金额≤10000000.00元,10.50%,--;

由于数字的位数不确定,即可能是 1,000.00、10,000,000.00 或 999,999.00,所以我不能写定宽模式。我想知道是否有办法在 Python 中替换它们,或者可能是某种我可以在 Excel 中运行的 VBA 脚本。

任何想法都可以,谢谢。

标签: pythonexcelregexvba

解决方案


您要替换的第一个逗号之前的位数无关紧要。

像这样的正则表达式(?<=\d{1})\,(?=\d{3})应该能够找到您要替换的所有逗号。


推荐阅读