如何过滤“os.listdir”导致的异常名称

2024-09-28 22:20:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用os.listdir(d)列出文件夹中的所有文件。有一些奇怪的名字,比如

['ᅳ',
 'ᅴ',
 'ᅵ',
 '¢',
 '£',
 '¬',
 ' ̄',
 '¦',
 '¥',
 '₩',
 '←',
 '↑',
 '→',
 '↓',
 '■',
 '○',
 '\ufff9',
 '\ufffa',
 '\ufffb',
 '']

你能提出一些想法来过滤掉它们吗


Tags: 文件文件夹os名字listdirufffaufffbufff9
2条回答

您可以准备一个可接受字符的列表,例如:

acceptables = r'[_,.-]'

然后查看当删除这些字符时,哪些路径名是完全字母数字的:

import os, re

[x for x in os.listdir('.') if re.sub(acceptables, '',x).isalnum()]

请注意,方括号“[]”是定义要忽略的字符集所必需的,它们不是该集的一部分

您可以在列表上应用筛选器,以仅授权常用字符。 诸如此类:

import os
import re
directories = os.listdir('.')

# Before filter
print(directories)

# Filtered
d = list(filter(lambda x: re.match("[a-zA-Z\d\_\-]+", x), directories))
print(d)

Output: 
Before filter: ['main.py', '¥']
Filtered: ['main.py']

相关问题 更多 >