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
    • [0-9]+
      匹配一个数字的1+倍(省略
      +
      以匹配一个数字)
  • 关闭捕获组
从结果中选择第二个字段。例如:

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