Svetelektro.com

Svetelektro.com

Meno:
Heslo:
SVETELEKTRO • Zbavenie sa diakritiky v Python

Zbavenie sa diakritiky v Python

C,C++,C#

Moderátori: psichac, Moderátori

Zbavenie sa diakritiky v Python

Odosla┼ąod zen » 07 Aug 2017, 12:45

M├ím tak├Żto file:
K├│d: Vybra┼ą v┼íetko
Mám
tak├Żto

a chcel bych ho prepisat ako:
K├│d: Vybra┼ą v┼íetko
Mam
takyto

Uz toto mi nefunguje, error \lib\encodings\cp1252.py,
K├│d: Vybra┼ą v┼íetko
f1=open('a.txt','r')
f2=open('b.txt','r')
for line in f1:
  print(line)
  print(line, file=f2)
u┼ż pri nacitani.

Na internete sú návody iba na diakritiku definovanú v programe, nie ak sa citá z file.

Jedna mo┼żnos┼ą je c├ştat "rb" a zrobi┼ą si tabu─żku. Ak mate uroben├║ alebo viete ─Źosi elegantnej┼íie...
Samoz┼Öejm─Ť, ┼że d─Ťde─Źek nem├í kapesn├ş hodinky poh├ín─Ťn├ę elekt┼Öinou. Takov├Ż nesmysl si m┼»┼że vymyslit jen Saturnin. (Zdenek Jirotka, 1942)
zen
Obr├ízok pou┼ż├şvate─ża
St├íly ─Źlen
St├íly ─Źlen
Pr├şspevky: 379
Zalo┼żen├Ż: 22.11.2013
Bydlisko: Cadca
Karma: 6

Re: Zbavenie sa diakritiky v Python

Odosla┼ąod Sender » 07 Aug 2017, 13:22

VYtvo┼Öil bych si funkci,kter├í by nahradila p├şsmena s diakritikou jin├Żmi.
Sender
Obr├ízok pou┼ż├şvate─ża
Pokro─Źil├Ż ─Źlen
Pokro─Źil├Ż ─Źlen
Pr├şspevky: 535
Zalo┼żen├Ż: 26.05.2008
Karma: 1

Re: Zbavenie sa diakritiky v Python

Odosla┼ąod fero182 » 07 Aug 2017, 13:58

Uloz nacitany line zo suboru do premenej String napr prem a potom skus replace char

prem = "text ─Ź,┼í bla bla "
print str.replace("─Ź,┼í", "c,s")

malo by nahradit dane znaky za take ake si nadefinujes mozes si na to napisat funkciu....
fero182
Okoloid├║ci
Okoloid├║ci
Pr├şspevky: 2
Zalo┼żen├Ż: 07.08.2017
Paragraf: 23
Karma: 0

Re: Zbavenie sa diakritiky v Python

Odosla┼ąod Gavin Milarrr » 07 Aug 2017, 14:16

Neexistuje knihovna, kter├í propoj├ş Python s iconv?
Taky v├ís ┼ítve debilita a sopl├íctv├ş? Na http://efis.tul.cz/forum b─Ť┼ż├ş experiment├íln├ş odblben├ę f├│rum.
Gavin Milarrr
Obr├ízok pou┼ż├şvate─ża
Ultimate ─Źlen
Ultimate ─Źlen
Pr├şspevky: 2533
Vek: 42.83
Zalo┼żen├Ż: 06.10.2008
Bydlisko: Liberec
Karma: 18

Re: Zbavenie sa diakritiky v Python

Odosla┼ąod zen » 07 Aug 2017, 15:40

@Sender
@fero182
zen nap├şsal:Jedna mo┼żnos┼ą je c├ştat "rb" a zrobi┼ą si tabu─żku.
Ak mate uroben├║ alebo viete ─Źosi elegantnej┼íie...

@Gavinn
iconv v Python neexistuje, no zkusim google
Samoz┼Öejm─Ť, ┼że d─Ťde─Źek nem├í kapesn├ş hodinky poh├ín─Ťn├ę elekt┼Öinou. Takov├Ż nesmysl si m┼»┼że vymyslit jen Saturnin. (Zdenek Jirotka, 1942)
zen
Obr├ízok pou┼ż├şvate─ża
St├íly ─Źlen
St├íly ─Źlen
Pr├şspevky: 379
Zalo┼żen├Ż: 22.11.2013
Bydlisko: Cadca
Karma: 6

Re: Zbavenie sa diakritiky v Python

Odosla┼ąod mac26 » 07 Aug 2017, 15:51

Uz toto mi nefunguje

V pythone som nerobil, ale nemas nahodou ten druhy subor otvoreny tiez na citanie?
mac26
Zasl├║┼żil├Ż ─Źlen
Zasl├║┼żil├Ż ─Źlen
Pr├şspevky: 1026
Zalo┼żen├Ż: 01.02.2010
Bydlisko: Martin
Karma: 6

Re: Zbavenie sa diakritiky v Python

Odosla┼ąod Andy99 » 07 Aug 2017, 15:54

Ale no... samozrejme je tu moznost definovania vl. znakov, ktore bude replacovat, niekedy efektivnejsie riesenie.
Samozrejme je tu moznost, ze to kniznica spravi za nas ;)

input.txt (kodovanie utf-8)
K├│d: Vybra┼ą v┼íetko
Mám
tak├Żto


K├│d: Vybra┼ą v┼íetko
import codecs
import unicodedata

# read lines from input file
with codecs.open('input.txt', "r", "utf-8") as f:
    # encode text
    text = unicodedata.normalize('NFKD', f.read()).encode('ascii','ignore')
    # print encoded text
    print text
    f.close();


Namiesto toho "print text" si mozes spravit lubovolnu akciu ;)
Andy99
Obr├ízok pou┼ż├şvate─ża
St├íly ─Źlen
St├íly ─Źlen
Pr├şspevky: 301
Vek: 30.64
Zalo┼żen├Ż: 05.03.2008
Bydlisko: Bratislava
Karma: 20

Re: Zbavenie sa diakritiky v Python

Odosla┼ąod vosa » 07 Aug 2017, 16:26

Podla mna by som encode radsej nepouzil s parametrom 'ignore' a to f.close(); tam je podla mna zbytocne. Inac dobre ;)
vosa
Obr├ízok pou┼ż├şvate─ża
Nov├Ż ─Źlen
Nov├Ż ─Źlen
Pr├şspevky: 71
Zalo┼żen├Ż: 24.10.2012
Bydlisko: Bratislava
Karma: 3

Re: Zbavenie sa diakritiky v Python

Odosla┼ąod zen » 07 Aug 2017, 21:24

[quote="Andy99"]
K├│d: Vybra┼ą v┼íetko
    print text

To vyzerá zle... No, zkusil som...

FUNGUJE!!! S├şce ─Ź├şt├í do binary cely file (akosi som zabudol nap├şsa┼ą, ze chcem ─Ź├şta┼ą line by line), ale s t├şm som si u┼ż poradil:

K├│d: Vybra┼ą v┼íetko
import codecs, unicodedata

f2=open('a2.txt','w')
with codecs.open('a1.txt', "r", "utf-8") as f1:
  for line in f1:
    text=unicodedata.normalize('NFKD',line)   \
                    .encode('ascii','ignore') \
                    .decode("utf-8")          \
                    .rstrip()
    if len(text)==0:           continue
    if text.startswith("//"):  continue
    if text.startswith("  *"): continue
    print(text)
    print(text,file=f2)


V─Ćaka!!!
Samoz┼Öejm─Ť, ┼że d─Ťde─Źek nem├í kapesn├ş hodinky poh├ín─Ťn├ę elekt┼Öinou. Takov├Ż nesmysl si m┼»┼że vymyslit jen Saturnin. (Zdenek Jirotka, 1942)
zen
Obr├ízok pou┼ż├şvate─ża
St├íly ─Źlen
St├íly ─Źlen
Pr├şspevky: 379
Zalo┼żen├Ż: 22.11.2013
Bydlisko: Cadca
Karma: 6

Re: Zbavenie sa diakritiky v Python

Odosla┼ąod Andy99 » 08 Aug 2017, 08:55

Male vysvetlenie na zaciatok :)
K├│d: Vybra┼ą v┼íetko
# subor nebude otvoreny nacitanie v binarnom mode, ako si pisal. Pre binarny mod by bol argument 'rb'.
with codecs.open('a1.txt', "r", "utf-8") as f1:

# normalize("NFKD", line) - prevedie unicode string na ASCII string
# encode('ascii','ignore') - chyby pre ASCII budeme ignorovat
# .decode("utf-8") - nie je potrebne string znovu dekodovat na UTF-8
# .rstrip() - odstrani medzery na konci stringu
text=unicodedata.normalize('NFKD',line).encode('ascii','ignore').decode("utf-8").rstrip()


Myslim, ze toto riesenie by mohlo byt trochu optimalnejsie.
K├│d: Vybra┼ą v┼íetko
import re

with codecs.open('input.txt', 'r', 'utf-8') as fr:
    for line in fr:
        # convert UTF-8 string to ASCII
        text=unicodedata.normalize('NFKD',line).encode('ascii','ignore').strip()
        # search for [a-zA-Z0-9_]
        if re.search('\w+', text):
            print(text)

Samozrejme regularny vyraz si mozes upravit podla potreby. Ja som vychadzal z predosleho kodu.
Andy99
Obr├ízok pou┼ż├şvate─ża
St├íly ─Źlen
St├íly ─Źlen
Pr├şspevky: 301
Vek: 30.64
Zalo┼żen├Ż: 05.03.2008
Bydlisko: Bratislava
Karma: 20

Re: Zbavenie sa diakritiky v Python

Odosla┼ąod zen » 08 Aug 2017, 16:02

Prisah├ím, ze bez toho .decode("utf-8") mi to tla─Ź├ş b'

Mo┼żno rozdiel Python 2.7 a 3.4.

Potreboval som to abych prep├şsal v├Żpis ─îSOB, to funguje. Sk├║sil som nahradi┼ą ASCII IBM850/CP850 coz by sa mi mohlo niekedy hodi┼ą a vzdal to.
Samoz┼Öejm─Ť, ┼że d─Ťde─Źek nem├í kapesn├ş hodinky poh├ín─Ťn├ę elekt┼Öinou. Takov├Ż nesmysl si m┼»┼że vymyslit jen Saturnin. (Zdenek Jirotka, 1942)
zen
Obr├ízok pou┼ż├şvate─ża
St├íly ─Źlen
St├íly ─Źlen
Pr├şspevky: 379
Zalo┼żen├Ż: 22.11.2013
Bydlisko: Cadca
Karma: 6

Re: Zbavenie sa diakritiky v Python

Odosla┼ąod Andy99 » 08 Aug 2017, 16:31

Mozno by si mohol ukazat komplet kod len tak pre zaujimavost.

Prikladam malu ukazku:
input.txt
K├│d: Vybra┼ą v┼íetko
m├ím tak├Żto
s├║bor
s
  *
--
))

\\
─îSOB

a bodka

script.py
K├│d: Vybra┼ą v┼íetko
import codecs
import unicodedata
import re

# output file
fw=open('output.txt','w')

# open UTF-8 encoded file for reading
with codecs.open('input.txt', 'r', 'utf-8') as fr:
    # loop over lines
    for line in fr:
        # convert UTF-8 string to ASCII
        text=unicodedata.normalize('NFKD',line).encode('ascii','ignore').strip()
        # search for [a-zA-Z0-9_]
        if re.search('\w+', text):
            print(text)
            # print output to file
            fw.write(text + '\n')
fw.close()

output.txt
K├│d: Vybra┼ą v┼íetko
mam takyto
subor
s
CSOB
a bodka
Andy99
Obr├ízok pou┼ż├şvate─ża
St├íly ─Źlen
St├íly ─Źlen
Pr├şspevky: 301
Vek: 30.64
Zalo┼żen├Ż: 05.03.2008
Bydlisko: Bratislava
Karma: 20

Re: Zbavenie sa diakritiky v Python

Odosla┼ąod zen » 10 Aug 2017, 16:14

Andy99 nap├şsal:Mozno by si mohol ukazat komplet kod len tak pre zaujimavost.

Celkom nerad... Ten program asi nikty nenapisem - dal som ho aj mojej ex na zkusku, ci by sa jej mohol hodit. Ked poveda, ze to zkusi, tak to zkusi. Nebudem jej to kazde tri mesiace pripominat.

Problem: Na uctovanie CSOB pouzivam program psany pre inu banku kde su polozky triedene odzdola, CSOB je netriedi. Uctovanie ma nebavi, myslim na cosi in├ę, najednou nemam to iste saldo. Ich PDF je straslivy, tak prepisem ten TXT. Alespon ked lahko najdem saldo ku konci dna, bude sa mi hladat snadneji kde to nesuhlasi.

Ak chces videt co povazujem za pouzitelny vypis, tak pre-alpha version:

ASC.PY
K├│d: Vybra┼ą v┼íetko
def high_2_low_ascii(file_in,file_out):
  import os, sys, getopt, codecs, unicodedata
  if not os.path.isfile(sys.argv[1]):
    print("Could not open",sys.argv[1])
    exit()

  print ("Converting to low ASCII")
  f1=codecs.open(file_in, "r","utf-8")
  f2=       open(file_out,"w")
  for line in f1:
    for line in f1:
      line=unicodedata.normalize('NFKD',line)   \
                      .encode('ascii','ignore') \
                      .decode("utf-8")          \
                      .rstrip()
      if len(line)>0: print(line,file=f2)

if __name__ == "__main__":
  if len(sys.argv)<3:
    print("Usage:",os.path.basename(sys.argv[0]),"file_in file_out")
    print("       Replaces high ASCII with low ASCII.")
    exit()
  high_2_low_ascii(sys.argv[1],sys.argv[2])


CSOB.PY
K├│d: Vybra┼ą v┼íetko
import os, sys, getopt
sys.path.append("C:\\WINDOWS")
from ASC import high_2_low_ascii
#-----#-----#-----#-----#-----#-----#-----#-----#-----#-----#-----#-----#
if len(sys.argv)<2:
  print("Usage:",os.path.basename(sys.argv[0]),"file_in")
  print("       Arranges CSOB account statement.")
  print("       file_out=CSOB.DOC.")
  exit()
if not os.path.isfile(sys.argv[1]):
  print("Could not open",sys.argv[1])
  exit()

print ("Calling ASC")
high_2_low_ascii(sys.argv[1],"_csob_1.tmp")
print ("Compacting data")
f3=open("_csob_2.tmp","w")
with open("_csob_1.tmp","r") as f2:
  for line in f2:
    line=line.rstrip().replace(',','.')
    if 'datum zauctovania:' in line:
      x=line[25:].split('.')
      print(x[2].zfill(4)+'.'+x[1].zfill(2)+'.'+x[0].zfill(2)+',',file=f3,end='')
    if 'suma:' in line:
      print(line[25:]+',',file=f3,end='')
    if 'mena:' in line:
      continue
    if 'zostatok:' in line:
      print(line[25:]+',',file=f3,end='')
    if 'referencia platitela:' in line:
      line=line[25:]
      if not line.startswith('/VS'):
        print(line+',',file=f3,end='')
    if 'typ transakcie:' in line:
      print(line[25:]+',',file=f3,end='')
    if 'cislo uctu protistrany:' in line:
      continue
    if 'banka protistrany:' in line:
      continue
    if 'nazov protistrany:' in line:
      print(line[25:]+',',file=f3,end='')
    if 'informacia pre prijemcu:' in line:
      x=line[25:].replace(" Miesto: ",",").replace(" KURZ:",",Kurz:")
      print(x+',',file=f3,end='')
    if 'doplnujuce udaje:' in line:
      print(line[25:],file=f3)

print ("Writing CSOB.DOC")
f3=open("CSOB.DOC","w")
date_old='start'
count=1
with open("_csob_2.tmp","r") as f2:
  for line in f2:
    count=count+1
    line=line.rstrip() \
             .replace(",,,",",")\
             .replace(",,",",")\
             .replace("Trvaly prikaz na uhradu cislo 6,","Zdravotna poistovna,")
    z=line.split(',')
    if date_old=='start':
      date_old=z[0]
    elif (date_old==z[0]):
      print("---------------------------------------------------------------------------",file=f3)
    else:
      date_old=z[0]
      print("===========================================================================",file=f3)
    print(z[0]+' '+'{0:<40}'.format(z[3])+'{0:>12}'.format(z[1])+'{0:>12}'.format(z[2]),file=f3)
    for i1 in range(4,len(z)-1):
      if not ("Suma:" in z[i1] and "EUR" in z[i1]):
        print("          ",z[i1],file=f3)
print("***************************************************************************",file=f3)
print(count,"operations",file=f3)
os.remove("_csob_1.tmp")
os.remove("_csob_2.tmp")


Je to _pre-alpha version_, chce to minimalne upravit "Transakcia platobnou kartou" a "Odoslana platba elektronicky" + co mi povei moja ex. Toto sa uz upravit neda, zmazat vsetko a pouzit list of lists. Triedit list of lists asi nebude legrace.

Nemusite mi pisat, ze ASC.PY by dal do C:\WINDOWS len debil. Include v Python neurobili zrovna sikovno, budem muset najst dlhodob├ę riesenie. Dufal som, ze to bude fungovat kdesi v PATH=. (Co som do PATH pridal, to je zalohovan├ę.)
Samoz┼Öejm─Ť, ┼że d─Ťde─Źek nem├í kapesn├ş hodinky poh├ín─Ťn├ę elekt┼Öinou. Takov├Ż nesmysl si m┼»┼że vymyslit jen Saturnin. (Zdenek Jirotka, 1942)
zen
Obr├ízok pou┼ż├şvate─ża
St├íly ─Źlen
St├íly ─Źlen
Pr├şspevky: 379
Zalo┼żen├Ż: 22.11.2013
Bydlisko: Cadca
Karma: 6

Re: Zbavenie sa diakritiky v Python

Odosla┼ąod Andy99 » 10 Aug 2017, 19:03

No... kde zacat. Teraz by som ta mohol zvozit za ten kod a nevravim este gramatiku. No nespravim to, radsej ti poradim, mozno sa ti to niekedy zide :)

Ja som pozadoval vstupny subor, aby som ti mohol vyvratit tvoje tvrdenie, ze ten moj nefunguje. Kludne mozes casti, ktore nemaju byt verejne nahradit "xxx" ;).

ASC.PY
1. ma byt volany ako samostatny modul?
    1.1. ak nie, zapisovat vstup/vystup do suborov nie je nastastnejsie riesenie
    1.2. Odporucam tento script prepisat ako modul a zakazdym ho radsej includnut
2."if not os.path.isfile(sys.argv[1]):"
    2.1. Preco overujes len 1. argument, 2. je hadam nepovinny?
    2.2. Co ak sa nebude dat do suboru zapisovat?
3. "print ("Converting to low ASCII")"
    3.1. To nie je predsa pravda, script nemeni velkost pismien, ale konvertuje unicode na ASCII
4. "f1=codecs.open(file_in, "r","utf-8")" aj "f2"
    4.1. Ked uz si chcel pouzit subory, preco si po sebe nezavrel descriptory? Programator by ich mal po sebe pozatvarat. Spoliehat sa na to, ze ich destruktor zavrie nie je vzdy istota. Dalsia moznost je pouzit blok "with", pricom sa zatvara automaticky po opusteni.
5."for line in f1: for line in f1:"
    5.1. To ma aky vyznam? Raz sa tie radky predsa encoduju a hotovo.
6. "line=unicodedata.normalize('NFKD',line)"
    6.1. Tie iste chyby, ktore som uz spominal v predoslom prispevku...
    6.2. Uz nie je potrebne odstranovat znaky, ktore si spominal v predoslom prispevku?

CSOB.PY
1. "sys.path.append("C:\\WINDOWS")"
    1.1. To snad nemyslis vazne...?
    1.2. Nebudem ti pisat, preco je toto umiestenenie nevodne...
    1.3. Len tak na okraj, ak si nedas pozor a spustis to napr. v source-nutom shelli, tak ti kazde taketo spustenie prida do systemoveho PATHu aj windows...
2. "if not os.path.isfile(sys.argv[1]):"
    2.1. To iste ako predosli bod 2.
3. "with open("_csob_1.tmp","r") as f2:"
    3.1. Cely blok az po "print ("Writing CSOB.DOC")" by bolo mozne nahradit nejakym regularom, ktory by v tomto pripade bol prehladnejsi. No v neposlednom rade mozno aj rychlesi, no vsetko zalezi od vstupnych dat.
4. "f3=open("CSOB.DOC","w")"
    4.1. Takto si prepisujes posledny descriptor len take fukoty.
    4.1.1. Pred novym priradenim je potrebne predosli aj zavriet ;)
5. "with open("_csob_2.tmp","r") as f2:"
    5.1. stale citanie/zapisovanie medzivysledkov z/do suborov nie je stastne riesenie. Skor sa snaz pouzivat pamat ;)
6. ".replace(",,,",",").replace(",,",",")"
    6.1. To ako vazne? Myslim, ze tu sa regular ",,+" priam ziada.
7. "if date_old=='start': date_old=z[0] elif (date_old==z[0]):..."
    7.1. Tak toto je ceresnicka :) V kazdej podmienke sa udeje to iste. Co takto to prepisat na "if (date_old==z[0]): print("==...") "novy_riadok" date_old==z[0]"?
8. zatvorit desciptor "f3"

Samotne usporiadanie retazov v pamati (pole N-tic) je jednoduchsie ako si myslis. Takto by sa ti velmi jednoducho vyhol spominanym suborom.

To co som ti napisal neber v zlom, ale prave naopak, skus sa z toho poucit :).
Andy99
Obr├ízok pou┼ż├şvate─ża
St├íly ─Źlen
St├íly ─Źlen
Pr├şspevky: 301
Vek: 30.64
Zalo┼żen├Ż: 05.03.2008
Bydlisko: Bratislava
Karma: 20

Re: Zbavenie sa diakritiky v Python

Odosla┼ąod zen » 11 Aug 2017, 14:53

Ty si sa rozpisal... Co sa tyce gramatiky, kratke zpravy prejdem sk-spell.sk (aj ked mu moc neverim, zkusil som ho po nemecky, moc sa nevyznamenal), na dlhe nemam trpezlivost. If you want me to write correctly, I am quite willing to continue in English. Are you?

Andy99 nap├şsal:Ja som pozadoval vstupny subor, aby som ti mohol vyvratit tvoje tvrdenie, ze ten moj nefunguje. Kludne mozes casti, ktore nemaju byt verejne nahradit "xxx" ;).

Uloz ako txt
http://eshop.novatech.sk/zbozi?zb=ryzen
U CSOB som vystacil s tim, ze som txt "rb" a tych par znakov nahradil tabulkou. U Novatech chcem vyfiltrovat motherboards. Tak som sa rozhodol, urobit cosi znovu pouzivatelne.

Andy99 nap├şsal:ASC.PY
1. ma byt volany ako samostatny modul?

Nie, dokumentace Pythonu je v tomto smeru zvadzajuci.
a) if __name__ som vyhodil, uplne zbytocne
b) premenoval som ho na SUBS.PY - CSOB.PY sa bude cudovat...
c) casom tam pridam dalsie funkcie
d) musi vyriesit, kde ho umistim; C:\WINDOWS nie je dobr├ę miesto

Andy99 nap├şsal:1.1. ak nie, zapisovat vstup/vystup do suborov nie je nastastnejsie riesenie

Zial, ziadny iny zposob nevidim. Toto nie je zadanie
"Na standardnom chessbord su dane dve policka. Najdite najkratsiu cestu konikom z policka 1 do policka 2".

Ja neviem, co budem robit. Prva vec je mat vobec predstavu, co v tom file je. Utesujem sa, ze tie temporary files nakonec sluzi ako logs. Ja mam alespon tu slusnost, tie files nakonec vymazat.

Andy99 nap├şsal:1.2. Odporucam tento script prepisat ako modul a zakazdym ho radsej includnut

Nechapem, co tym myslis. (Modul pre mna moze znamenat celkom hocico.)

Andy99 nap├şsal:"if not os.path.isfile(sys.argv[1]):"
Preco overujes len 1. argument, 2. je hadam nepovinny?

Ten prvy zadavam ked rozbehnem program, zde je velka p() chyby.
Ten druhy je v programu, bud nefunguje napoprve alebo netreba testovat.
Jedina moznost, ze je locked() inou applikaciou. Pouzivatel ma smolu ;)

Andy99 nap├şsal:"print ("Converting to low ASCII")"
3.1. To nie je predsa pravda, script nemeni velkost pismien, ale konvertuje unicode na ASCII

ASCII je celkom elasticky pojem. Mas pravdu, ze konvertuje na ASCII. Lenze... Plain vanilla IBM PC funguje s osmibitovymi bytes a code page 850 (alebo ako sa to vola) definuje aj chr$(128)-chr$(255), ako ├á ├Ą ├í. Coz sa vola "extended ASCII", ale povetsinou len "ASCII". Ak sa chce upresnit sedmibitove ASCII, tak low ASCII. Moc bych sa necudoval ze teraz ked DOS je neucte, ASCII znamena zase low ASCII.

Andy99 nap├şsal:4. "f1=codecs.open(file_in, "r","utf-8")" aj "f2"
Ked uz si chcel pouzit subory, preco si po sebe nezavrel descriptory? Programator by ich mal po sebe pozatvarat. Spoliehat sa na to, ze ich destruktor zavrie nie je vzdy istota. Dalsia moznost je pouzit blok "with", pricom sa zatvara automaticky po opusteni.

Hladal som, ci v Python existuje cosi ako fclose.all() a vyrozumel som, ze Python si zavre VSETKY files. Na to sa budem muset pozret.

Andy99 nap├şsal:5."for line in f1: for line in f1:"

Argh!!! To mi zbylo ked mi to citalo cely file. Opravim. Vdaka.

Andy99 nap├şsal:5.1. To ma aky vyznam? Raz sa tie radky predsa encoduju a hotovo.
6. "line=unicodedata.normalize('NFKD',line)"
[list=1]6.1. Tie iste chyby, ktore som uz spominal v predoslom prispevku...
6.2. Uz nie je potrebne odstranovat znaky, ktore si spominal v predoslom prispevku?


Posledna verzia, funguje na novatech.txt:

K├│d: Vybra┼ą v┼íetko
def to_low_ascii(file_in,file_out):
  print ("SUBS.PY: to_low_ascii",file_in,"->",file_out)
  import os, sys, getopt, codecs, unicodedata
  if not os.path.isfile(sys.argv[1]):
    print("Could not open",sys.argv[1])
    exit()
  try:
    f2=open(file_out,"w")
  except IOError as e:
    print(e)
    exit()
  f1=codecs.open(file_in,"r","utf-8")
  for line in f1:
    line=unicodedata.normalize('NFKD',line)   \
                    .encode('ascii','ignore') \
                    .decode("utf-8")          \
                    .rstrip()
    if len(line)>0: print(line,file=f2)
  f1.close()
  f2.close()

Ak ten .decode() vykopnem, pise v binary. Ak mi neveris, musis prijit do Cadce na kavu. :)

CSOB.PY si nechame na pozdeji, uz je toho vela.

Andy99 nap├şsal:To co som ti napisal neber v zlom, ale prave naopak, skus sa z toho poucit :).

Neberem to vo zlom. Ja rad poslucham, co mi kto poradi. Co s radou urobim je uz moja vec.
Samoz┼Öejm─Ť, ┼że d─Ťde─Źek nem├í kapesn├ş hodinky poh├ín─Ťn├ę elekt┼Öinou. Takov├Ż nesmysl si m┼»┼że vymyslit jen Saturnin. (Zdenek Jirotka, 1942)
zen
Obr├ízok pou┼ż├şvate─ża
St├íly ─Źlen
St├íly ─Źlen
Pr├şspevky: 379
Zalo┼żen├Ż: 22.11.2013
Bydlisko: Cadca
Karma: 6


Nasp├Ą┼ą na C,C++,C#

Kto je pr├ştomn├Ż

U┼ż├şvatelia prezeraj├║ci si toto f├│rum: ┼Żiadny registrovan├Ż pou┼ż├şvate─ż a 3 host├ş.

Forums ©
Autor str├ínky je Ondrej Z├ívodsk├Ż(zawin), o graficky design sa star├í ─Żubo┼í Fabo(BUFU).

TOPlist

Powered by Copyright © UNITED-NUKE CMS. All Rights Reserved.
─îas potrebn├Ż k spracovaniu str├ínky 0.59 sek├║nd