python - 如何在 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 脚本。
任何想法都可以,谢谢。
解决方案
您要替换的第一个逗号之前的位数无关紧要。
像这样的正则表达式(?<=\d{1})\,(?=\d{3})
应该能够找到您要替换的所有逗号。
推荐阅读
- django - Django Rest Framework 方法返回用户类型的对象不是 JSON 可序列化的
- operating-system - 术语“运行映射/未映射的操作系统”是什么意思?
- c++ - 设置 C++ 包括
- javascript - 在 javascript MVC 项目中找不到 bundle.js
- python - 安装 tensorflow 模型对象检测包会安装每个版本的 pandas
- angular - 尝试在 android 上运行 ionic 时找不到模块“@angular-devkit .../utils”
- c++ - 存储 C++ lambda 的方法:模板与非模板形式?
- php - 在 PHP 中以字符串形式获取函数定义
- php - 使用 php 进行十六进制解码
- ecmascript-6 - 如何在 koa 项目中设置模块解析器?