在 Python 中将字符串从右到左分成两部分直到出现几个字符之一的最佳方法是什么?
目的是将一个字符串分成两部分,最后是版本号(以 A、B 或 C 开头),例如:
- EP3293036A1 -> EP3293036 + A1
- US10661612B2 -> US10661612 + B2
- CN107962948A -> CN107962948 + A
- ES15258411C1 -> ES15258411 + C1
我的代码适用于拆分单个字符的字符串:
first_part = number.rpartition('A')[0]
second_part = number.rpartition('A')[1] + number.rpartition('A')[2]
有没有办法使用 rpartition 获得多个参数,例如('A' 或 'B' 或 'C')?还是有更好的使用正则表达式的方法?
最佳答案
使用re.findall
.使用显示的正则表达式,此函数提取括号中的部分:(.*?)
- 任何重复 0 次或多次的字符,非贪婪; ([AB]\d*)$
- A 或 B,后跟 0 个或多个数字,然后是字符串的末尾。
import re
lst = ['EP3293036A1', 'EP3293036B']
for s in lst:
parts = re.findall(r'(.*?)([AB]\d*)$', s)
print(f's={s}; parts={parts}')
# s=EP3293036A1; parts=[('EP3293036', 'A1')]
# s=EP3293036B; parts=[('EP3293036', 'B')]
关于python - 如何在 Python 中拆分字符串,直到从右到左出现特定字符之一?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72533687/