1、提取字符串的场景及公式、命令
背景:目前遇到的场景主要是以某个字符串开始、某个字符串结束,提取中间部分的字符,有的时候需要开始的字符,有时不需要,大概涉及到了4种情况,场景及处理方式如下:
1.1 以某个字符开始、某个字符结束,期待的提取结果包含首末字符串
提取公式:a = re.findall("开始字符串.*末字符串",str)
1.2 以某个字符开始、某个字符结束,期待的提取结果不包含末字符串,但包含首字符串
提取公式:a = re.findall("开始字符串.*?(?=末字符串)",str)
例子:提取文本中的所有时间,如图
提取命令:
time = re.findall("202.*?(?=,)",content) # 也就是提取以202开头的,逗号结束的,且不包括逗号的
1.3 以某个字符开始、某个字符结束,期待的提取结果不包含首字符串,但包含末字符串:
提取公式:a = re.findall("(?<=开始字符串).*末字符串",str)
1.4 以某个字符开始、某个字符结束,期待的提取结果不包含首、末字符串:
提取公式1:a = re.findall("(?<=开始字符串).*?(?=末字符串)",str)
提取公式2:a = re.findall(".*开始字符串(.*)末字符串*",str)
例子:提取mocro_step的数据值,前面是固定字符micro_step=,后面是固定字符/global_step,如图:
提取命令:
micro_step = re.findall("(?<=micro_step=).*?(?=/global_step)", content) # case4 方法1
micro_step = re.findall(".*micro_step=(.*)/global_step*", content) # case4方法2
1.5 起始字符串不固定(即从首字符串提取到固定的字符串结束),用^指定从首字符串开始
提取公式:a = re.findall('^.*结束字符串',str)
2、特殊字符-需要转义
2.1 需要转义的特殊字符
2.2 转义符举例:提取r值也就是以字符串lr=[开头,逗号结尾之间的字符串,如图:
提取命令: learning_rate = re.findall(".*lr=\[(.*?), *", content)
提取结果:
-1.0274676347695078e-07
3、总结一下知识点,主要涉及了这几种情况
a、提取的字符串需要包含起始字符串--上面的1.1
b、提取的字符串不需要包含起始字符串--上面的1.2~1.4
c、提取到的字符串如果匹配到多个,只截取到第一个,不要后面的部分
解决办法:使用?
d、提取到的字符串如果匹配到多个,要匹配到的全部的字符串
解决办法:使用*
4、参考文章
Python正则表达式,这一篇就够了! - 知乎
python通过正则匹配指定字符开头与结束提取中间内容_python匹配字符串中间的文字-CSDN博客
Python正则表达式及常用匹配_python 正则表达式匹配_Sicc1107的博客-CSDN博客
python正则表达式--RE模块(转义r 和 \,贪婪模式与非贪婪模式) - 知乎文章来源:https://www.toymoban.com/news/detail-783882.html
利用python 正则 读取txt文件中指定字符之间的数据,并保存到excel中_python txt 某两行中间的数据_洛星尘pro的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-783882.html
到了这里,关于python 正则表达式提取字符串的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!