Python 字符串重新填充 重新导入 s=“afd[asd]12[a34][43]tt[+12]xxx” nums=[r'[^\w]\d+',s]中s的int(s)] 打印(nums) ---- 进口稀土 括号中的def整数: nums=[r'[^\w]\d+',s]中s的int(s)] 打印(nums) def main(): 打印(括号中的整数(“afd[asd][12][a34][43]tt[+12]xxx”)) 如果名称=“\uuuuu main\uuuuuuuu”: main()
当我将int()拆分为2个函数时,为什么会导致“ValueError:invalid literal for int(),以10为基数:“[12]”呢?您的正则表达式也会匹配数字之前的字符-即,Python 字符串重新填充 重新导入 s=“afd[asd]12[a34][43]tt[+12]xxx” nums=[r'[^\w]\d+',s]中s的int(s)] 打印(nums) ---- 进口稀土 括号中的def整数: nums=[r'[^\w]\d+',s]中s的int(s)] 打印(nums) def main(): 打印(括号中的整数(“afd[asd][12][a34][43]tt[+12]xxx”)) 如果名称=“\uuuuu main\uuuuuuuu”: main(),python,valueerror,findall,Python,Valueerror,Findall,当我将int()拆分为2个函数时,为什么会导致“ValueError:invalid literal for int(),以10为基数:“[12]”呢?您的正则表达式也会匹配数字之前的字符-即,[^\w]将匹配非数字字符 您应该只捕获数字组件-使用括号 试试这个: nums = [int(s) for s in re.findall(r'[^\w](\d+)', s)] 当我将int()除以2个函数时,为什么会导致“ValueError:invalid literal for int(),以1
[^\w]
将匹配非数字字符
您应该只捕获数字组件-使用括号
试试这个:
nums = [int(s) for s in re.findall(r'[^\w](\d+)', s)]
当我将int()除以2个函数时,为什么会导致“ValueError:invalid literal for int(),以10为基数:'[12'”
因为您不只是将代码重构为两个函数,所以输入是不同的
起初,您的输入是“afd[asd]12[a34][43]tt[+12]xxx”
接下来,您的输入是“afd[asd][12][a34][43]tt[+12]xxx”
您的第二个输入有方括号和一个环绕第一个“12”的空格。如果输入中的更改是有意的,那么这就是修复您的正则表达式的问题(但我不能这样做,因为我不能说出正则表达式的意图或可能的输入).请修正你问题中的缩进。谢谢,这几乎有效!我还需要负值。我应该添加什么,以便-43不会变为43?使
-
。