如何提取一个固定格式字符串的指定内容

比如说有一个字符串“X1000_1”,现在我想提取下划线之前的内容“X1000”,应该用什么方法呢

import re
str = "a123b"
print(re.findall(r"a(.+?)b",str))
#输出['123']

import re
str = "a123b456b"
 
print(re.findall(r"a(.+?)b", str))
#输出['123']
#?控制只匹配0或1个,所以只会输出和最近的b之间的匹配情况
 
print(re.findall(r"a(.+)b", str))
#输出['123b456']
 
print(re.findall(r"a(.*)b", str))
#输出['123b456']

 最简单的是以“_”分割字符串,取第一个元素

s = "X1000_1"
s1 = s.split("_")[0]
print(s1)

如果以内容的格式来提取就要用到正则表达式。

import re

s = "X1000_1"
# 提取X之后跟多个数字
s1 = re.findall(r'X\d+', s)
print(s1)

s = "X1000_1"
# 提取字母之后跟多个数字
s1 = re.findall(r'[A-Za-z]\d+', s)
print(s1)

正则表达式一般都需要针对具体的需求来写,建议你自己学习一下正则表达式

回答: 如果一个字符串里有好多个下划线,而想获取最后一个下划线之前的所有字符该怎么办

import re

s = "AA_X_1000_1"
# 取最后一个下划线之前的所有字符
s1 = re.findall(r'(.+)_', s)
print(s1[0])

 

也可以是删除最后一个下划线和之后的所有字符

import re

s = "AA_X_1000_1"
# 删除最后一个下划线和之后的所有字符
s1 = re.sub(r'_[^_]*$', '', s)
print(s1)

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632