Python 如何筛选出由“异常名称”导致的异常名称;os.listdir";

Python 如何筛选出由“异常名称”导致的异常名称;os.listdir";,python,string,unicode,Python,String,Unicode,我使用os.listdir(d)列出文件夹中的所有文件。有一些奇怪的名字,比如 ['ᅳ', 'ᅴ', 'ᅵ', '¢', '£', '¬', ' ̄', '¦', '¥', '₩', '←', '↑', '→', '↓', '■', '○', '\ufff9', '\ufffa', '\ufffb', ''] 请您提出过滤掉这些字符的建议好吗?您可以在列表上应用过滤器,只授权普通字符。 诸如此类: import os import re directori

我使用
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()]

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

为什么要筛选它们?显然那个目录里有一些名字很奇怪的文件。奇怪的名称是否会使这些文件无法执行任何您想要执行的处理?@user2357112supportsMonica我知道这些文件的内容不符合我的条件。所以我过滤掉它们以节省计算。你怎么知道的?要处理的文件是否具有与某些模式匹配的名称?如果是这样,您可能希望使用该模式来执行筛选。如果您不指定“怪异”名称的条件,我们无法帮助您使用筛选出这些名称的代码。