如何从字母数字字符串中提取有效数字



我有一个ID DIS002789。我想从给定的 ID 中提取 2789.我必须使用变量在 for 循环中使用提取的数字。

我尝试使用re.findall。

inputk='DIS0002789'
non_decimal = re.findall(r'[d.]+', inputk)
for n in range(non_decimal, non_decimal + 1000):

我越来越002789了。但是我希望我的输出是 2789.而且我也不能使用 for 循环,因为这个。它显示一个 n 错误,指出002789语法无效。我尝试将其转换为int.但它显示以下错误,TypeError:int(( 参数必须是字符串、类似字节的对象或数字,而不是 'list'

您可以将 re.findall(r'[d.]+', inputk) 的结果传递给 int 以使其成为整数。 int('0123')将忽略前导零。

例:

inputk='DIS0002789'
non_decimal = int(re.findall(r'[d.]+', inputk))

如果您希望它是一个字符串,您可以再次将其传递给strstr(int('0123')) == '123'

如果你想要 int 值,你应该把它转换为整数,如其他答案所示。如果您只需要字符串,可以尝试添加可选的前导零:

inputk='DIS0002789'
non_decimal = re.findall(r':?[0]*(d+)', inputk)
non_decimal

输出:

['2789']
您可以

忽略前导零并将其转换为整数以在循环中使用

inputk='DIS0002789'
non_decimal = int(re.findall(r':?[0]*(d+)', inputk)[0])

最新更新