Chcę porównać Technical Diploma (±12 years) z tym samym łańcuchem obecnym w przeglądarce. Uruchamiam test WebDriver w Pythonie, gdzie pobiera Technical Diploma (±12 years) z DB i próbuje porównać z ciągiem w przeglądarce. Dostaję ten błąd, gdy próbuję porównać

Unicodewarning: Unicode Równe porównanie nie udało się przekonwertować obu argumentów do Unicode - interpretując je jako nierówne

Jak porównuję te struny nie-ASCII w Pythonie?

0
raju 3 wrzesień 2012, 23:41

2 odpowiedzi

Najlepsza odpowiedź

Jednym z twoich strun nie jest wartością Unicode, ale bosie. Chcesz przekonwertować to do Unicode, zdekodowanie go po pierwszym:

'Non-ASCII value containing UTF8: \xc2\xb1'.decode('utf8')

Ale będziesz musiał dowiedzieć się, co jest w pierwszej kolejności kodowanie Bytestring.

Jeśli zdefiniowałeś kodowanie plików źródłowych i definiujesz ciąg jako literał w swoim kodzie, upewnij się, że zdefiniujesz go jako literał Unicode, poprzedzając ciąg za pomocą u'':

u'Technical Diploma (±12 years)'

Zdecydowanie polecam czytać na stronie Python Unicode Howto przed kontynuowaniem.

6
Martijn Pieters 3 wrzesień 2012, 19:44

Python informuje o tym problemy: najpierw przekonwertuj na UTF-8.

Przykład:

>>> u1='Technical Diploma (±12 years)'
>>> u2=u'Technical Diploma (±12 years)'
>>> u1==u2
__main__:1: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal
False
>>> u1.decode('utf-8')==u2
True
>>> 
1
the wolf 3 wrzesień 2012, 19:47