我有一个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()参数必须是字符串,类似字节的对象或数字,而不是“列表”
答案 0 :(得分:1)
您可以将re.findall(r'[\d.]+', inputk)
的结果传递给int
,以使其为整数。 int('0123')
将忽略前导零。
示例:
inputk='DIS0002789'
non_decimal = int(re.findall(r'[\d.]+', inputk))
如果您希望将其作为字符串,则可以再次将其传递给str
:str(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])