比如说有一个字符串“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