где ошибка в моем коде пытается сравнить без учета регистра с помощью Python - PullRequest
0 голосов
/ 18 мая 2018

У меня есть код, который читает файлы и сравнивает содержимое с пользовательским вводом, игнорируя регистр символов.

Я использовал списочное понимание, чтобы просмотреть содержимое и сравнить с пользовательским вводом..

Проблема заключается в том, что при понимании списка возвращается пустой список, хотя введенное слово существует.Пример:

textContent

Les hiboux Charl es Baudelaire

Cycle 3 *

POESIE

Sous lesесли и так, то и без того ужасно Les hiboux se tiennent rangés Ainsi que des dieux étrangers Dardant leur ilil rouge.Ils Méditent.

Sans remuer ils se tiendront Jusqu'à l'heure mélancolique Où, наклонный леосил, Le Ténèbres s'établiront.

Ансамбль леерской ориентации Куиль Фо Ен Се Монд Ку Крейн Ле Тумульте и его движение;

L'homme ivre d'une ombre qui passe Porte toujours le châtiment D'avoir voulu changer de place.

Les Fleurs du Mal 1857

Charl es Pierre Baudelaire (1821 - 1867) est un poète français.

пользовательский ввод:Чарльз
слово существует: Чарльз - Чарльз - Чарльз

x=self.lineEditSearch.text()
print(x)
textString=self.ReadingFileContent(Item)

#self.varStr =[c for c in textString if c.islower() or c.isupper() or c.capitalize()]            
self.varStr =[i for i in textString if i.lower() == x.lower()]            

print(self.varStr)

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Ваша проблема в том, что вы вводите только self.varStr членов textString, которые удовлетворяют i.lower() == x.lower(), что означает "быть полностью одинаковым (без учета регистра) с x".

Вы хотите выбрать участников, которые содержат x.

Вы можете сделать это, изменив i.lower() == x.lower() на i.lower() in x.lower()

0 голосов
/ 18 мая 2018

Если

user_input = "charl"
word_exist = ["Charles","charle","CHARLE","Hello"]

Тогда

output = [item for item in word_exist if user_input.lower() in item.lower()]
print(output)
# ['Charles', 'charle', 'CHARLE']

Это то, что вы ищете?

...