Unicode \u... na polskie znaki.

Unicode \u... na polskie znaki.
X3
  • Rejestracja:ponad 9 lat
  • Ostatnio:3 miesiące
  • Postów:308
0

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

edytowany 1x, ostatnio: xenix33
Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

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


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
Madaoo
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad rok
  • Postów:490
1

By wydrukować ć z unikodu:

Kopiuj
print u'\u0107'

"Chodzenie po wodzie i tworzenie oprogramowania wg specyfikacji są łatwe, o ile woda i specyfikacja są zamrożone" - Edward V. Berard
edytowany 1x, ostatnio: Madaoo
enedil
  • Rejestracja:prawie 12 lat
  • Ostatnio:7 dni
  • Postów:1027
0

W czym problem?

Kopiuj
>>> print u'\u0107'
ć
edytowany 1x, ostatnio: enedil
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.

enedil
  • Rejestracja:prawie 12 lat
  • Ostatnio:7 dni
  • Postów:1027
0

Taki potworek chyba da radę:

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

edytowany 1x, ostatnio: enedil
0

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

enedil
To zaakceptuj
X3
  • Rejestracja:ponad 9 lat
  • Ostatnio:3 miesiące
  • Postów:308
0

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

enedil
A jak próbujesz pisać?
Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
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.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 1x, ostatnio: Shalom
X3
  • Rejestracja:ponad 9 lat
  • Ostatnio:3 miesiące
  • Postów:308
0

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

Jak zapisać w .txt to samo po polsku.

Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
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


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 4x, ostatnio: Shalom
X3
  • Rejestracja:ponad 9 lat
  • Ostatnio:3 miesiące
  • Postów:308
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!

  • l.txt (285 KB) - ściągnięć: 720
enedil
  • Rejestracja:prawie 12 lat
  • Ostatnio:7 dni
  • Postów:1027
0

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

Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
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.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
X3
  • Rejestracja:ponad 9 lat
  • Ostatnio:3 miesiące
  • Postów:308
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.

edytowany 2x, ostatnio: xenix33
YA
  • Rejestracja:około 10 lat
  • Ostatnio:około 6 godzin
  • Postów:2372
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+...

edytowany 1x, ostatnio: yarel
Madaoo
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad rok
  • Postów:490
0

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


"Chodzenie po wodzie i tworzenie oprogramowania wg specyfikacji są łatwe, o ile woda i specyfikacja są zamrożone" - Edward V. Berard
edytowany 1x, ostatnio: Madaoo
X3
  • Rejestracja:ponad 9 lat
  • Ostatnio:3 miesiące
  • Postów:308
0

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.