Python-如何从字符串中提取特定的数字?
我有以下模式的一系列字符串:Python-如何从字符串中提取特定的数字?,python,Python,我有以下模式的一系列字符串: string='ABCD 1NAME 123456'。 我需要提取最后的数字才能生成一个ID。我尝试使用isdigit方法,但问题是它也会返回前面的数字 名字 注意事项: 有时名称与数字不符 len从最后几位开始,范围从5到9 有人能给我推荐一个替代方案吗? 我想我需要测试前一个位置或下一个位置是否为数字才能提取id,但我不知道如何实现此测试。您可以使用正则表达式: import re pattern = re.compile('\d{5,9}$') for
string='ABCD 1NAME 123456'
。
我需要提取最后的数字才能生成一个ID。我尝试使用isdigit
方法,但问题是它也会返回前面的数字
名字
注意事项:
len
从最后几位开始,范围从5到9import re
pattern = re.compile('\d{5,9}$')
for match in pattern.findall('ABCD 1NAME 123456'):
print(match)
输出
123456
上述正则表达式是指:
匹配一组5-9位数字\d{5,9}
表示数字组必须位于末尾,如果该组可以位于字符串中的任何位置,只需删除此符号即可$
[-1]
索引
string = 'ABCD 1NAME 123456'
string = string.split()
num_ids = []
num_ids.append(string[-1])
可以将其与一个循环一起使用,以便为所有人提取
带循环:
strings = ['ABCD 1NAME 123456','BHDU 1NAME 45678','OIUS 1NAME 109028']
num_ids = []
for string in strings:
string = string.split()
num_ids.append(string[-1])
print(num_ids)
可选,可理解
正如@Alexander提到的
strings = ['ABCD 1NAME 123456','BHDU 1NAME 45678','OIUS 1NAME 109028']
num_ids = [string.split()[-1] for string in strings]
print(num_ids)
输出
123456
你可能会:
a = string.split()
if a[-1].isdigit():
print(a[-1])
这将拆分字符串,如果它确实是一系列数字,则输出最右边的一个。如何rsplit()
我假设您正在使用for循环来迭代所讨论的字符串
string = 'ABCD 1NAME 123456'
for i in string:
if i.isdigit():
print(i)
您可能应该使用split():
您可以使用
split
将字符串按空格分割,然后使用-1
对其进行索引以提取id部分
string = 'ABCD 1NAME 123456'
val=string.split()
print(val[-1])
num\u id.append(字符串[-1])
更安全。使用列表理解:ids=[string.split()
string = 'ABCD 1NAME 123456'
for i in string.split():
if i.isdigit():
print(i)
string = 'ABCD 1NAME 123456'
val=string.split()
print(val[-1])