如何过滤掉 "os.listdir" 产生的不寻常名称

How to filter out unusual names resulted from "os.listdir"

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

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

您能否提出任何过滤掉它们的想法?

您可以在列表中应用过滤器,以仅授权常用字符。 类似的东西:

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']

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

acceptables = r'[_,.-]'

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

import os, re

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

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