首页 > 解决方案 > Python:在字符串中的某些字符后打印 4 个字符

问题描述

我需要从这一行:

 CR: 0.24%    RU   01.07.2021   CR: 0.44%    TJ   01.07.2021   CR: 0.15%    TJ   01.07.2021   CR: 0.18%    TJ   01.07.2021

得到一个这样的数组:

['0.24%', '0.44%', '0.15%', '0.18%']

即得到4个字符后CR:

我试图用正则表达式来解决这个问题,并且能够在CR: 我的代码之后得到一个字符:

print(re.findall(r'CR: (\w+)', string))

在此先感谢您的帮助!

标签: pythonregex

解决方案


问题\w+在于匹配任何一个或多个字母、数字和下划线的模式(带有一些连接符标点符号和变音符号)。.它与%字符不匹配。

您可以使用

import re
s = "CR: 0.24%    RU   01.07.2021   CR: 0.44%    TJ   01.07.2021   CR: 0.15%    TJ   01.07.2021   CR: 0.18%    TJ   01.07.2021"
print(re.findall(r'CR:\s*(\d+(?:\.\d+)?%)', s))
# => ['0.24%', '0.44%', '0.15%', '0.18%']

请参阅正则表达式演示Python 演示

您可能还会在CR:空格后得到一个单词:

print(re.findall(r'CR:\s*(\S+)', s))

请参阅正则表达式演示

详情

  • CR:-CR:字符串(\b如果要确保前面没有其他字母/数字,请在前面添加CR
  • \s*- 零个或多个空白字符
  • (\d+(?:\.\d+)?%)- 捕获组 1:一个或多个数字,然后是一个可选的点和一个或多个数字,然后是一个%字符
  • (\S+)- 一个或多个非空白字符。

推荐阅读