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

时间:2019-06-10 17:40:46

标签: python pandas

我有一个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()参数必须是字符串,类似字节的对象或数字,而不是“列表”

3 个答案:

答案 0 :(得分:1)

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

示例:

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

如果您希望将其作为字符串,则可以再次将其传递给strstr(int('0123')) == '123'

答案 1 :(得分:1)

如果要使用int值,则应将其转换为整数,如其他答案所示。如果只需要字符串,则可以尝试添加可选的前导零:

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

输出:

['2789']

答案 2 :(得分:0)

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

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