Python怎么判断过滤特殊字符,python过滤特殊字符,问题描述:一些文件名中包
Python怎么判断过滤特殊字符,python过滤特殊字符,问题描述:一些文件名中包
问题描述:
一些文件名中包含有特殊字符(乱码的字符,或者一些未知的特殊字符),现在想通过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 中奖"""
编橙之家文章,
相关内容
- Python poplib.POP3登陆邮箱密码错误程序变卡是什么原因,
- python代码下面__name__= __main__怎么使用 作用是什么?,
- python2.7和python3面对编码得出不一样的结果是为什么,
- 请问fedora19部署django+apache2不成功如何调试,fedora19dja
- 异常处理try在for循环中应该加在循环里还是循环外,异
- Python flask无法正常启动celery任务队列出现什么问题了,
- Python菜鸟完成基础教程后再如何进阶,python基础教程
- 学习Python GUI编程要先了哪些方面知识,pythongui,零基础
- Python用什么方法输出值在list中的位置?,pythonlist,team
- Python转码问题求助,字典字符串类型转换失败源码如何修
评论关闭