python - 如何在 Python 中拆分字符串,直到从右到左出现特定字符之一?

标签 python string split

在 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/

相关文章:

c# - 正则表达式 选择 [A-Z ] 除了两个连续空格

android - 我们可以在 values 文件夹中为 sting strings (Android) 创建 new_strings.xml 和 strings.xml 吗?

删除 R 中符号(连字符)后面的空格

python - 在 python 中拆分标签

list - 强力查询列表转表

PHP:将字符串拆分为数组 foreach char

python - flask 将变量从一个函数传递到另一个函数

python - "disable"on_change id odoo 9 创建产品后

python - 我需要 MSVCR90.dll 版本 9.0.21022.8

python - 如何将文本文件中的一行与其中存在的字符串匹配?