python - Python用正则表达式分隔字符串
问题描述
这是我的字符串:
st = "$10,8001st$6,480,2nd$2,160,3rd$1,188,4th$648,5th$324"
我的预期输出是:
$10,800 1st $6,480, 2nd $2,160, 3rd $1,188, 4th $648, 5th $324
我写了这段代码:
result = " ".join(re.split("([\$\d\,]+)\d[a-zA-z]{2}", st))
但是输出不能满足我,因为它删除了一些部分。
在这种情况下有人可以帮助我吗?
解决方案
您可以使用
text = "$10,8001st$6,480,2nd$2,160,3rd$1,188,4th$648,5th$324"
print(" ".join(re.split(r'(\$\d{1,3}(?:,\d{3})*,?)', text)).strip())
# => $10,800 1st $6,480, 2nd $2,160, 3rd $1,188, 4th $648, 5th $324
请参阅Python 演示和正则表达式演示。该模式是匹配的单个捕获组(因此也re.split
可以输出捕获的字符串)
\$
- 一个$
字符\d{1,3}
- 一位、两位或三位数字(?:,\d{3})*
- 0 次或多次出现,
后跟三位数字,?
- 一个可选的,
。
推荐阅读
- algorithm - 来自组合的 S3 uri 生成器
- azure-functions - 如何以无服务器方式将 https 回调从 paypal 传输到本地开发人员
- ios - 如何使用 UIBezierPath 创建带有数据点的曲线图?
- google-bigquery - BigQuery如何在多字段键排序上引用先前记录中的字段值
- android - 相当于 Android 上的 console.log
- c# - 使用 net core 3 MVC 在运行时加载程序集和视图
- html - HTML emble autostart="1" 但不能自动;
- c# - C# 仅在选定的派生类中使用基类方法
- mysql - phpMyAdmin 显示 404 Not Found (Ubuntu 18.04 Nginx)
- postgresql - PostgreSQL 检查或触发