Unicode \u... na polskie znaki.

0

Jak zamienić \u0107 na 'ć'? Najlepiej funkcja. Może jest jakaś tablica w sieci. Nie mogę znaleźć. Aha. Chodzi o python 2.7.

0

Nie bardzo rozumiem co chcesz zamieniać na co. Chcesz gdzieś ten znak wypisać?

1

By wydrukować ć z unikodu:

print u'\u0107'
0

W czym problem?

>>> print u'\u0107'
ć
0

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.

0

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.

0

Działa. Dzięki. Nie pomyślałem o tym.

0

Chociaż nie mogę zapisać do pliku. Coś jest nie tak. Ake dzięki.

1

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.

0

Mam w pliku .txt. to np.:
#EXTINF:-1,Przest\u0119pcza opowie\u015b\u0107

Jak zapisać w .txt to samo po polsku.

1

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

0
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!

0

No to jeszcze zabawniej się porobiło, ktoś wrzucił do Twojego pliku repr(string), zamiast stringa samego w sobie.

0

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.

0
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.

1

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+...

0

Link z tabelą kodowań polskich znaków:
https://pl.wikipedia.org/wiki/Kodowanie_polskich_znaków

0

Oki. Dzięki. Ja to wszystko wiem. Ale dalej nie moge zapisać. Ale dzięki za fatygę.

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