python如何识别特殊字符_Python怎么判断过滤特殊字符

问题描述:

a3a2c032eda8e08020a8e592c72e6b30.png

一些文件名中包含有特殊字符(乱码的字符,或者一些未知的特殊字符),现在想通过python来提取出这些“特别的”文件。

请问,有什么比较好的办法可以实现吗?

目前的思路:通过遍历文件名中的每个字符,并检查其Unicode编码值是否在汉字的范围内(换句话说:判断其是否是汉字),如果不是,就提取出来

你自己先要确定“乱码”的定义,例如韩文(unicode),如果你装了韩文字体,那是可以显示的,不是乱码,但没装的话就是问号一堆,如果是韩文(euc-kr),在汉字系统那只是一堆无语义的汉字……可能这个举例扯远了,你觉得不会有这种情况,但我只是提醒一下会有意料之外的情况

所以,你需要一个白名单,把你允许的字符unicode范围都列出来,因为肯定不止汉字,像你列出的文件名中就有空格

另外,没必要逐个字符检查,直接用re.sub去除白名单外的字符就可以了

针对这里的问题,我们可以先将文件名解码成unicode,然后用gbk编码,如果抛出异常,说明编码失败,即文件名中存在特殊字符。下面是一个小例子:#! /usr/bin/env python

# -*- coding: utf-8 -*-

file_names = ["œ®特殊字符.txt",

"没有特殊字符.txt",

"ßååå.txt"

]

for file_name in file_names:

try:

file_name.decode("utf-8").encode("gbk")

print file_name, "..."

except UnicodeEncodeError:

print file_name, "中奖"

"""outputs:

œ®特殊字符.txt 中奖

没有特殊字符.txt ...

ßååå.txt 中奖

"""

玩蛇网文章,转载请注明出处和文章网址:https://www.iplaypy.com/wenda/wd19488.html

相关文章 Recommend

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值