Python - 如何从字符串中提取特定数字?

use*_*960 0 python

我在以下模式中有一系列字符串: string = 'ABCD 1NAME 123456'.我需要提取最后的数字才能生成ID.我试图使用该isdigit方法,但问题是它还返回名称前的数字.

注意事项:

  1. 有时名称不带数字.
  2. len 最后一位数字的范围是5到9.

有人可以建议我另类吗?我认为我需要测试前一个位置或下一个位置是否为数字才能提取id,但我无法弄清楚如何实现此测试.

Dan*_*ejo 5

你可以使用正则表达式:

import re


pattern = re.compile('\d{5,9}$')

for match in pattern.findall('ABCD 1NAME 123456'):
    print(match)
Run Code Online (Sandbox Code Playgroud)

产量

123456
Run Code Online (Sandbox Code Playgroud)

上述正则表达式意味着:

  • \d{5,9} 匹配一组5 - 9位数
  • $ 意味着数字组必须在末尾,如果该组可以在字符串中的任何位置,则只删除此符号.