gpt4 book ai didi

Python 的 glob 模块和 unix 的 find 命令不识别非 ascii

转载 作者:太空狗 更新时间:2023-10-30 00:45:51 24 4
gpt4 key购买 nike

我在 Mac OS X 10.8.2

当我尝试查找文件名中包含非 ASCII 字符的文件时,我没有得到任何结果,尽管我确信它们存在。以控制台输入为例

> find */Bärlauch*

我没有得到任何结果。但是,如果我尝试不使用变音符,我会得到

> find */B*rlauch*
images/Bärlauch1.JPG

所以文件肯定存在。如果我重命名文件,将“ä”替换为“ae”,则会找到该文件。

同样,Python 模块 glob 无法找到文件:

>>> glob.glob('*/B*rlauch*')
['images/Bärlauch1.JPG']
>>> glob.glob('*/Bärlauch*')
[]

我发现它一定与编码有关,但我的终端设置为 utf-8,并且我使用的是使用 unicode 字符串的 Python 3.3.0。

最佳答案

Mac OS X 总是使用非规范化字符作为 HFS+ 上的文件名。使用 unicodedata.normalize('NFD', pattern) 对 glob 模式进行反规范化。

import unicodedata

glob.glob(unicodedata.normalize('NFD', '*/Bärlauch*'))

关于Python 的 glob 模块和 unix 的 find 命令不识别非 ascii,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14185114/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com