Подберите акцентированные строки в списках строк в Python 3 - PullRequest
0 голосов
/ 25 октября 2018

Почему это возвращает False в Python 3?И какой способ заставить его вернуть True?

e = "allé.png"
l = ["allé.png"]

print(e in l)

enter image description here

1 Ответ

0 голосов
/ 25 октября 2018

При сравнении юникода вы должны нормализовать свои данные, используя unicodedata .Если вы хотите выполнить поиск в большом списке, вы можете использовать map или составление списка:

import unicodedata
from functools import partial

normalize = partial(unicodedata.normalize, 'NFC')

e = "allé.png"
e = normalize(e)
l = ["allé.png"]
print(e in map(normalize, l))

Output

True

Или какальтернатива:

print(e in [normalize(s) for s in l])

Далее

  1. Что делает unicodedata.normalize в python?
  2. нормализующий юникод
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...