假设我的 path
中有以下文件,该文件位于连接到 Python 3 Colab 笔记本的 Google 驱动器中:
(这里,#行代表输出)
ls = os.listdir(path)
print (ls)
# ['á.csv', 'b.csv']
一切看起来都不错,但如果我写
'á.csv' in ls
# False
但应该返回 True。但是,如果我重复最后一个代码,但不是编写“á.csv”,而是从 print (ls)
手动复制粘贴它,它会返回 True。
谢谢
ps:问题不完全在于该文件名,而是在于多个包含特殊字符(即 í、á、é、ó、ñ)的文件名
最佳答案
您可以在比较文件列表之前对它们进行规范化。
from unicodedata import normalize
ls = [normalize('NFC', f) for f in os.listdir(path)]
# compare
normalize('NFC', 'á.csv') in ls
# or just 'á.csv' in ls
关于python - os.listdir 返回带有特殊字符的奇怪文件名字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60013043/