首页 > 解决方案 > 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))

但是输出不能满足我,因为它删除了一些部分。

在这种情况下有人可以帮助我吗?

标签: pythonregex

解决方案


您可以使用

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 次或多次出现,后跟三位数字
  • ,?- 一个可选的,

推荐阅读