Portál AbcLinuxu, 12. května 2025 11:24

Dotaz: Ako sa zbavit diakritiky

22.4.2006 19:56 GeorgeWH | skóre: 42
Ako sa zbavit diakritiky
Přečteno: 491×
Odpovědět | Admin
Zdravim. Mam textovy subor (konfigurak k Postfixu), ktory obsahuje komentare s diakritikou, ktorej sa chcem zbavit. Ako "pretransformujem" pismena "ľ š ý á ..." na "l s y a ..."?

file mi hodil: UTF-8 Unicode English text.

Vdaka.
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

vencour avatar 22.4.2006 20:32 vencour | skóre: 56 | blog: Tady je Vencourovo | Praha+západní Čechy
Rozbalit Rozbalit vše Re: Ako sa zbavit diakritiky
Odpovědět | | Sbalit | Link | Blokovat | Admin

Muj laickej postup by byl otevřít v textovym editoru a pak nahradit všechny písmena (replace all) ... když už to nechcete dělat skriptem.

Ty nejhlubší objevy nečekají nutně za příští hvězdou. Jsou uvnitř nás utkány do vláken, která nás spojují, nás všechny.
22.4.2006 20:42 Martin Šebek | skóre: 18 | blog: Tady je Indiánovo | Mladá Boleslav
Rozbalit Rozbalit vše Re: Ako sa zbavit diakritiky
Odpovědět | | Sbalit | Link | Blokovat | Admin
cstocs -i utf-8 ascii file_name
22.4.2006 20:45 Pavel1 | skóre: 33
Rozbalit Rozbalit vše Re: Ako sa zbavit diakritiky
Odpovědět | | Sbalit | Link | Blokovat | Admin
Další na překódování : iconv, recode.
slackman avatar 23.4.2006 08:46 slackman | skóre: 13 | Praha
Rozbalit Rozbalit vše Re: Ako sa zbavit diakritiky
Odpovědět | | Sbalit | Link | Blokovat | Admin

Moznosti je spousta, jde to treba takto:
cat soubor1 | \
tr áéěíóúůýžščřďťňľ aeeiouuyzscrdtnl > \
soubor2

Pokud chybi nejaka, treba velka pismena, staci doplnit.

Nebo zkuste: skript cnv pro SED od L. Škarvady. Pro ziskani informaci o pouziti staci spustit:
# ./cnv
jen tak na prazdno bez parametru.

mood = (machine != slackware) ? depressed : euphoria;
Jan Zahornadsky avatar 23.4.2006 09:32 Jan Zahornadsky | skóre: 22 | blog: hans_blog
Rozbalit Rozbalit vše Re: Ako sa zbavit diakritiky

Moznosti je spousta, jde to treba takto:
cat soubor1 | tr áéěíóúůýžščřďťňľ aeeiouuyzscrdtnl > soubor2

Tohle jede i v utf8? Máš na to nějaký patch pro tr, po kterém to nahrazuje ne po osmibitových skupinách, ale po písmenech podle locale?
Actually, I was half an hour into the pointer scripting documentation when she got dressed and left.
slackman avatar 23.4.2006 10:19 slackman | skóre: 13 | Praha
Rozbalit Rozbalit vše Re: Ako sa zbavit diakritiky

No jo, nejak jsem prehlidnul ze se tady mluvi o utf8. Moc se omlouvam. Vtom pripadu asi nebude fungovat ani ta legracka cnv.

mood = (machine != slackware) ? depressed : euphoria;
23.4.2006 16:24 Jan Martinek | skóre: 43 | blog: johny | Brno
Rozbalit Rozbalit vše Re: Ako sa zbavit diakritiky
Odpovědět | | Sbalit | Link | Blokovat | Admin
Odstranit diakritiku z UTF-8 není nic jednoduchého, protože substituce není vždy jednoznačná. Ale pro české znaky funguje toto:
$ cat abeceda_cz
áÁčČďĎěĚéÉíÍňŇóÓřŘšŠťŤúÚůŮýÝžŽ
$ recode --force utf8..flat abeceda_cz
$ cat abeceda_cz
aAcCdDeEeEiInNoOrRsStTuUuUyYzZ
Musí se dát parametr --force, protože jde o nevratné překódování.
29.8.2006 10:29 Jan Martinek | skóre: 43 | blog: johny | Brno
Rozbalit Rozbalit vše Re: Ako sa zbavit diakritiky
Dalo by se to taky takhle:
#!/usr/bin/env python

import unicodedata

old = u'ahojáÁčČďĎěĚéÉíÍňŇóÓřŘšŠťŤúÚůŮýÝžŽ'
norm = unicodedata.normalize('NFKD', old)
new = norm.encode('ascii', 'ignore')
print old
print new
Výsledek:
ahojáÁčČďĎěĚéÉíÍňŇóÓřŘšŠťŤúÚůŮýÝžŽ
ahojaAcCdDeEeEiInNoOrRsStTuUuUyYzZ
Základní myšlenka by měla fungovat pro jakékoli kódování.
Opravdu nerad vytahuji staré vyřešené vlákno, ale momentálně nemám kam jinam bych si to zapsal ;-)
hajma avatar 30.8.2006 07:28 hajma | skóre: 27 | blog: hajma | Říčany
Rozbalit Rozbalit vše Re: Ako sa zbavit diakritiky
Odpovědět | | Sbalit | Link | Blokovat | Admin
na češtinu jsem to nezkoušel, ale z franštiny mi pomohlo uni2ascii
21 promarněných znaků

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.