我只需从文件名中提取数字,例如:
GapPoints1.shp
GapPoints23.shp
GapPoints109.shp
如何使用Python从这些文件中提取数字?我需要把它合并到一个for循环中.
mgi*_*son 19
你可以使用正则表达式:
regex = re.compile(r'\d+')
Run Code Online (Sandbox Code Playgroud)
然后获取匹配的字符串:
regex.findall(filename)
Run Code Online (Sandbox Code Playgroud)
这将返回包含数字的字符串列表.如果你真的想要整数,你可以使用int:
[int(x) for x in regex.findall(filename)]
Run Code Online (Sandbox Code Playgroud)
如果每个文件名中只有1个数字,则可以使用regex.search(filename).group(0)(如果您确定它会产生匹配).如果未找到匹配项,则上面的行将生成一个AttributeError,表示该属性NoneType没有group.
所以,你没有留下任何关于这些文件的位置以及如何获取这些文件的描述,但我假设您将使用该os模块获取文件名.
至于从名称中获取数字,你最好使用正则表达式re,如下所示:
import re
def get_numbers_from_filename(filename):
return re.search(r'\d+', filename).group(0)
Run Code Online (Sandbox Code Playgroud)
然后,要在for循环中包含它,您将在每个文件名上运行该函数:
for filename in os.listdir(myfiledirectory):
print get_numbers_from_filename(filename)
Run Code Online (Sandbox Code Playgroud)
或类似的规定.
| 归档时间: |
|
| 查看次数: |
10345 次 |
| 最近记录: |