Je suis à la recherche de fichiers en double en comparant les noms de fichiers.String comparer en python
Cependant, j'ai trouvé que certains chemins retournés par os.walk
contiennent des caractères échappés. Par exemple, je peux obtenir structure in the Earth\'s core.pdf
pour un fichier et structure in the Earth\xe2\x80\x99s core.pdf
pour un autre.
In [1]: print 'structure in the Earth\'s core.pdf\nstructure in the Earth\xe2\x80\x99s core.pdf'
structure in the Earth's core.pdf
structure in the Earth’s core.pdf
In [2]: 'structure in the Earth\'s core.pdf' == 'structure in the Earth\xe2\x80\x99s core.pdf'
Out[2]: False
Comment traiter ces cas?
==== Juste pour clarifier le Q en réponse aux commentaires, il y a aussi d'autres situations pour les fichiers en double comme
- un nom de fichier contenant plus d'espaces que l'autre
- un nom de fichier séparé par
-
tandis que l'autre par:
- un nom de fichier contenant des mots japonais/chinois et l'autre composé de chiffres et de mots japonais/chinois ...
ce sont deux caractères différents ... '' 'n'est pas égal à' ''. Vous remplacez l'un par l'autre ou comparez seulement les caractères alphanumériques d'une phrase donnée. – kaza
Ils ne sont pas * identiques *, car ils utilisent un codage différent pour créer le même aspect visuel _general_. c.f. [this] (https://stackoverflow.com/questions/32761954/how-to-decode-an-ascii-string-with-backslash-x-x-codes) lien pour une discussion similaire. Ce sont des caractères différents, comme le note @bulbus. Fixer cela est compliqué, car cela ouvre une boîte de Pandore sur le nombre de façons possibles de dire quelque chose qui est intellectuellement similaire, mais pas littéralement identique. –
Vous pouvez essayer de les réduire à la représentation "dictionnaire", en supprimant tous les caractères non alphanumériques avant de les comparer et en rédigeant un rapport. –