如何过滤掉 "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()]
请注意,方括号“[ ]”是定义要忽略的字符集所必需的,它们不是该集的一部分。
我使用 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()]
请注意,方括号“[ ]”是定义要忽略的字符集所必需的,它们不是该集的一部分。