Python - brak polskich znaków w "output" - co może być problemem?

0

Witam,
mam problem z moim programem odpytującym słownik internetowy listą słów i zwracającym tłumaczenia. Używam nowszej wersji Pythona 3.3.2. Dla przykładu gdy użyję **print("spać") **wynikiem jest spać, jednak gdy spać jest zwracane przez funkcje odpytującą stronę (gdy inputem sleep) dostaję coś w stylu spax86, z czego prosto wydedukować, że wyrażenie w stylu **x86 **pełni rolę polskiego znaku, w tym wypadku ć. Mimo szukania informacji na ten temat nie znalazłem nic, co by mi pomogło zarówno w polskiej jak i angielskiej "części" internetu. Próbowałem obejść to ręcznie używając funkcji replace("x86", "ć") jednak nic to nie daje. Z drugiej strony, gdy użyję funkcji **replace **na tym samym outpucie próbując zamienić "normalną" literę np. **s **- replace("s", "W"), w takim wypadku **s **jest bezproblemowo zamieniany na W.
Nie wiem gdzie leży błąd - jeśli to pomoże to źródło HTML strony słownika, którą przeszukuje ma ustawione charset=UTF-8, w Pythonie też.

0

Czego używasz do pobierania danych ze strony? BeautifulSoup? Pokaż kod to pomyślimy ;p

0

Nie używałem Beautiful Soup, zrobiłem to bardziej "ręcznie" z użyciem import urllib.request. :)
Na szczęście udało mi się rozwiązać ten problem, jeśli ktoś chciałby wiedzieć to podaje rozwiązanie:

Pierwotnie zamiast np. **ą **w jakimś wyrazie dostajemy \xc4\x85. Jeśli chcemy użyć funkcji replace, by zastąpić ten fragment prawdziwym **ą **musimy dodać slashe odpowiednio przed każdym "x-em", czyli replace("\xc4\xc5", "ą"). Wtedy finalnie dostajemy "ą".

0

Jednak nadal zastanawiam się nad efektywnością mojego rozwiązania - w moim wypadku muszę robić osobną komendę dla zastąpienia poszczególnych polskich liter - ą, ł, ę, itd. Czy jest jakiś lepszy sposób jak to zrobić, np. zmienić jakieś ustawienia?

0

Nie wiem dokładnie jak ty to tam czytasz, ale w konsekwencji dostajesz np. jakąś zmienną x typu bytes, na czym możesz zrobić albo

str(x, encoding='utf-8')

albo

x.decode('utf-8')

.

1 użytkowników online, w tym zalogowanych: 0, gości: 1