Python 如何根据字母表进行拆分?
我试图根据下面的字母表进行拆分,但不知何故无法正常工作,我有当前和预期的输出,我做错了什么?如何修复它Python 如何根据字母表进行拆分?,python,Python,我试图根据下面的字母表进行拆分,但不知何故无法正常工作,我有当前和预期的输出,我做错了什么?如何修复它 chiprev = ['4355b3','4364a1','4278b3'] for rev in chiprev: print rev.split("[a-b][A-B]")[-1] 电流输出:- 4355b3 4364a1 4278b3 预期产出:- b3 a1 b3 输出: 这将使用正则表达式操作 换句话说,它本质上是对每个rev,查找以a-b(小写)或a-b(大写)开头
chiprev = ['4355b3','4364a1','4278b3']
for rev in chiprev:
print rev.split("[a-b][A-B]")[-1]
电流输出:-
4355b3
4364a1
4278b3
预期产出:-
b3
a1
b3
输出:
这将使用正则表达式操作
换句话说,它本质上是对每个rev
,查找以a-b
(小写)或a-b
(大写)开头的所有子段,因此使用|
操作符。+
表示也提取以下内容。这将允许搜索也提取字母后面的数字
chiprev = ['4355b3','4364a1','4278b3']
for rev in chiprev:
print re.search(r'([a-b]|[A-B]).+',rev).group()
输出:
b3
a1
b3
您试图在
ab
或ab
上使用正则表达式进行拆分,因此可以使用
您使用的正则表达式将不会给出预期的输出,因为它匹配2个范围,即a-b小写和a-b大写,但在示例数据中找不到匹配,因为它只包含一个a
或b
如果您试图使用小写或大写字母a-z进行拆分,可以使用标志re.IGNORECASE
。作为正则表达式,可以在返回捕获组时使用捕获组
([a-z][0-9]+)
那会匹配的
捕获组(
匹配单个字符a-z[a-z]
匹配一个数字的1+倍(省略[0-9]+
以匹配一个数字)+
关闭捕获组)
import re
chiprev = ['4355b3','4364a1', '4278b3']
for rev in chiprev:
print (re.split("([a-z][0-9]+)", rev, flags=re.IGNORECASE)[1])
结果
b3
a1
b3
str.split()
根据精确匹配进行拆分,而不是正则表达式。你想要吗?我尝试了re.split(r'[a-f]+',rev)
,它输出为['4355','3']['4364','1']['4278','3']]
试试这个:re.split(r'[a-f]+','1234c5')
import re
chiprev = ['4355b3','4364a1', '4278b3']
for rev in chiprev:
print (re.split("([a-z][0-9]+)", rev, flags=re.IGNORECASE)[1])
b3
a1
b3