我有一个名为FILE-1.txt或FILE-340.txt的文件。我希望能够从文件名中获取数字。我发现我可以使用
numbers = re.findall(r'\d+', '%s' %(filename))
获取一个包含该数字的列表,并使用数字[0]将数字本身作为字符串...但如果我知道它只是一个数字,那么它似乎很迂回,并且不需要制作一个列表来获取它。还有另一种方法吗?
编辑:谢谢!我想我现在有另一个问题。而不是获取字符串,我如何获得整数?
答案 0 :(得分:18)
使用search
代替findall
:
number = re.search(r'\d+', filename).group()
可替换地:
number = filter(str.isdigit, filename)
答案 1 :(得分:2)
添加到F.J的评论中,如果你想要一个int,你可以使用:
numbers = int(re.search(r'\d+', filename).group())
答案 2 :(得分:1)
如果您希望自己的计划有效
使用它:
num = filename.split("-")[1][:-4]
这仅适用于您展示的示例
答案 3 :(得分:1)
另一种有趣的方式:
In [1]: fn = 'file-340.txt'
In [2]: ''.join(x for x in fn if x.isdigit())
Out[2]: '340'
答案 4 :(得分:0)
在回答您的新问题时,您可以将string
投放到int
:
>>>int('123')
123