python - unicodedata.normalize 缺少一个字符进行转换
问题描述
我正在尝试使用以下脚本重命名文件,但在捕获以下“不要”时遇到问题,该“不要”最终应为“不要”。关于如何做到这一点的任何想法?
def remove_accents(s):
nkfd_form = unicodedata.normalize('NFKD', s)
return u''.join([c for c in nkfd_form if not unicodedata.combining(c)])
for fname in glob.glob("**/*.mp3", recursive=True):
new_fname = remove_accents(fname)
if new_fname != fname:
try:
print ('renaming non-ascii filename to', new_fname)
os.rename(fname, new_fname)
except Exception as e:
print (e)
解决方案
错误的工作工具 -unicodedata.normalize
根本不是为了消除口音。
要向下转换为 ascii,请查看unidecode
:
>>> from unidecode import unidecode
>>> unidecode("Don’t")
"Don't"
推荐阅读
- javascript - mocking store.getState()
- ios - 如何在本地存储使用 Alamofire 下载的对象
- python - tf.group_by_reducer 示例,reducer 中有列表
- windows - 批量移动脚本给出语法错误,不移动文件
- java - Use a String as a conditional in java (Convert String to boolean)
- python - 使用请求模块进行抓取时出现错误消息 10054
- python - 使用 Python 控制虚拟机的键盘和鼠标
- regex - 使用 xml 中的正则表达式忽略换行符
- ios - 移动视图时安全区域插图消失
- css - 验证器给出 2 个解析错误