我对python很陌生。我正在尝试从另一个列表中删除出现在一个列表中的文件。这些列表是通过在 mac 和 windows 上重定向 ll -R 生成的(但已经进行了一些处理 - 合并、排序等 - 使用其他 python 脚本)。某些文件名带有重音符号和特殊符号。这些字符串,即使它们相同(打印相同并且在包含列表的文件中看起来相同)被发现是不相等的。
我找到了关于如何在 unicode 中比较字符串与特殊字符的线程: Python 字符串比较——特殊/Unicode 字符的问题 这与我的问题非常相似。我对编码以及如何更改字符串的编码做了更多阅读。但是,我尝试了在编解码器文档中可以找到的所有编解码器:https : //docs.python.org/2/library/codecs.html 对于所有可能的编解码器对,这两个字符串不相等(请参阅下面的程序 - 尝试了两者解码和编码选项)。
当我一一查看两个字符串中的字符时,重音 e 在一个文件中显示为重音 e(一个字符),在另一个文件中显示为两个字符(e 和可打印为空格)。
任何想法,将不胜感激。
我将两个文本文件缩小到一行一个单词(显然带有重音)。我将文本文件上传到 dropbox:testfilesindata和testmissingfiles(但还没有尝试从 dropbox 下载新副本)。
非常感谢!
附注。抱歉弄乱了链接。我没有声望 10 ...
#!/usr/bin/python3
import sys
codecs = [ 'ascii', 'big5', 'big5hkscs', 'cp037', 'cp424', 'cp437', 'cp500', 'cp720 ', 'cp737 ', 'cp775', 'cp850', 'cp852', 'cp855', 'cp856 ', 'cp857', 'cp858', 'cp860', 'cp861', 'cp862', 'cp863', 'cp864', 'cp865', 'cp866', 'cp869', 'cp874 ', …Run Code Online (Sandbox Code Playgroud)