Jak zamienić \u0107 na 'ć'? Najlepiej funkcja. Może jest jakaś tablica w sieci. Nie mogę znaleźć. Aha. Chodzi o python 2.7.
Nie bardzo rozumiem co chcesz zamieniać na co. Chcesz gdzieś ten znak wypisać?
By wydrukować ć z unikodu:
print u'\u0107'
W czym problem?
>>> print u'\u0107'
ć
Powim dokładnie. Python 2.7 ma to do siebie, że ciężko coś zdekodować. Mam w pliku txt:
Przest\u0119pcza opowie\u015b\u0107
Jak to zmienić na język polski.
Taki potworek chyba da radę:
import re
tekst = 'Przest\u0119pcza opowie\u015b\u0107'
zdekodowane = re.sub(r'\\u[0-9a-f]{4}', lambda x: unichr(int(x.group()[2:],16)), tekst)
print zdekodowane
Miej na uwadze, że w żadnym wypadku nie odpowiadam za błędy spowodowane tym kodem.
Działa. Dzięki. Nie pomyślałem o tym.
Chociaż nie mogę zapisać do pliku. Coś jest nie tak. Ake dzięki.
Co faktycznie masz w pliku? Jakie bajty? Pokaż hexdump albo uploaduj taki plik. Bo wątpie zebyś miał tam literalnie ciagi znaków \ucośtam
. Po prostu twój notepad tak to wypisuje. To nie problem pythona tylko brak zrozumienia czym jest kodowanie znaków.
Mam w pliku .txt. to np.:
#EXTINF:-1,Przest\u0119pcza opowie\u015b\u0107
Jak zapisać w .txt to samo po polsku.
Nie. To ci się wyświetla jak otworzysz ten plik albo jak wypiszesz zawartość w jakiś sposób
. Ja pytam jakie DANE są w pliku. Pokaż hexdump tego pliku albo go uploaduj!
Jeszcze raz: nie rozumiesz co to jest kodowanie znaków. Nie ma czegoś takiego jak zapisanie "po polsku"! Znaki są kodowane w jakiś sposób. Nie ma czegoś takiego jak literka ć
. Taki znak w różnych kodowaniach jest zapisywany na różne sposoby. w ISO-8859-2 to będzie jeden bajt 0xe6
ale w Unicode to będą 2 bajty \u0107
a UTF-8 to będzie \xc4\x87
Shalom napisał(a):
Nie. To ci się wyświetla jak otworzysz ten plik albo jak wypiszesz zawartość
w jakiś sposób
. Ja pytam jakie DANE są w pliku. Pokaż hexdump tego pliku albo go uploaduj!
No to jeszcze zabawniej się porobiło, ktoś wrzucił do Twojego pliku repr(string)
, zamiast stringa samego w sobie.
No to mam złą wiadomość -> ktoś kto, tak samo jak ty, nie rozumie co to kodowanie znaków, generalnie nasrał do tego pliku. Teraz faktycznie nie ma za bardzo co z tym zrobić, poza szukaniem regexpami tych unicode escape i zamienianiem ich na faktyczne symbole z poprawnym kodowaniem.
enedil napisał(a):
No to jeszcze zabawniej się porobiło, ktoś wrzucił do Twojego pliku
repr(string)
, zamiast stringa samego w sobie.
Można jaśniej?
Oki. Dam całęgo jsona. Może wam się uda zapisać listę m3u z tego po polsku.
Kiedyś widziałem taki parser. name.replace('\u...', 'ż').
Może jest jakiś spis znaków polskich w unicode? Napiszę sobie sam.
W http://www.diveintopython3.net/strings.html masz ładnie wytłumaczone co to jest kodowanie znaków i jak wpływa na interpretację ciągu bajtów i przez kogo.
Patrząc na jsona i sposób zapisu polskich znaków, to nadaje się do działu WTF.
-- edited:
"Spis polskich znaków" masz na https://pl.wikipedia.org/wiki/Alfabet_polski
Są tam podane kombinacje u+...
Link z tabelą kodowań polskich znaków:
https://pl.wikipedia.org/wiki/Kodowanie_polskich_znaków
Oki. Dzięki. Ja to wszystko wiem. Ale dalej nie moge zapisać. Ale dzięki za fatygę.