python - 美元金额,千位以逗号分隔
问题描述
我是 python 新手。我正在尝试使用正则表达式从子字符串中提取以美元计价的金额。它在大多数情况下都有效,但是我面临着一些我无法解决的问题。
结果金额是由于逗号而无法识别为金额的字符串。它也不适用于小于$1
, 的少量(例如0.89
)。没有领先$
。任何帮助是极大的赞赏。
这是我所拥有的:
df['Amount']=df['description'].str.extract('(\d{1,3}?(\,\d{3})*\.\d{2})')
这是一个应该被解析的字符串:
000000000463 NYC DOF OPA CONCENTRATION ACCT. *00029265 07/01/2013 AP5378 1,107,844.38 Ven000000000463 Vch:00029265
我正在尝试1,107,844.38
在数据框对象的单独列中提取金额。我没有任何应该被拒绝的字符串。
解决方案
您可以尝试使用正则表达式
rx = r"\b(?<!/)(\d{1,3}(?:,\d{3})*(?:\.\d{2})?)\b(?!/)"
df['Amount']=df['description'].str.extract(rx)
查看正则表达式演示
细节
\b
- 单词边界(?<!/)
-/
在当前位置的左边没有(避免匹配日期时间值)\d{1,3}
- 1 到 3 位数字(?:,\d{3})*
- 0+重复,
和3位数字(?:\.\d{2})?
- 一个可选的.
和 2 位数字\b
- 单词边界(?!/)
-/
当前位置右侧没有(避免匹配日期时间值)
推荐阅读
- keras - 冻结层的特定过滤器以在 Keras 中进行修剪
- python - 从 tflearn 转换为 keras
- android - Android 在启动时使用 init.rc 运行脚本不起作用
- javascript - 无法从 Firebase 读取数据
- javascript - 在更改时返回选定的值,并且在取消选择时不重复
- java - 如何从另一个 JFrame 执行 JButton 代码
- google-kubernetes-engine - 将数据从 Kubernetes 引擎中的 docker 容器存储到 GCS 时出现“权限不足”错误
- macos - QAction 图标无法点击
- php - php变量和变量赋值返回的值不同
- javascript - 有什么方法可以使用 JavaScript 访问 HTML 文本区域中的特定文本行?