Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: MilanČ 04. 07. 2012, 15:02:31

Název: Python seznamy česky
Přispěvatel: MilanČ 04. 07. 2012, 15:02:31
A opět jsem tady. Zdravím všechny!
V pythonu jsem se dostal k seznamům. Ty česky nějakým způsobem umí? V konzole to nejde a v souboru také ne, i když mám jako první řádek
 # -*- coding: utf-8 -*-. Když chci vypsat pouze jednu položku v seznamu, tak se to provede správně. Od dvou výše ale ne. Např.:
>>>  x[1]                 'druh\xc3\xbd'
>>>  print x[1]          druhý
>>>  print x[0:1]       ['prvn\xc3\xad']

Mám už i knížku, tam se ale právě krásně zobrazuje  x[0:2]        ['první', 'druhý'].
Díky MilanČ
Název: Re:Python seznamy česky
Přispěvatel: Logik 04. 07. 2012, 15:37:04
A když přesměruješ výstup do souboru, tak je v souboru také C\xxxxe\xxxxxtina?
Název: Re:Python seznamy česky
Přispěvatel: MilanČ 04. 07. 2012, 16:00:20
Tak takhle daleko jsem ještě nedošel  ;). Plánuji, že zhruba do tří týdnů bych do souboru vypisovat mohl.
MilanČ
Název: Re:Python seznamy česky
Přispěvatel: pecko 04. 07. 2012, 16:03:06
vies sem pastnut cely skript?
Název: Re:Python seznamy česky
Přispěvatel: MilanČ 04. 07. 2012, 16:23:35
# -*- coding: utf-8 -*-
x=["první", "druhý", "třetí", "čtvrtý"]                               #   Žádný velký projekt! Jsem začátečník. Používám gedit v debianu. Všude mám nastaveno utf-8
print x
Název: Re:Python seznamy česky
Přispěvatel: pecko 04. 07. 2012, 16:42:56
skus:


#!/usr/bin/env python
# -*- coding: utf-8 -*-


x = ['prvý', 'druhý', 'tretí', 'štvrtý', 'ľščťžýáí']
print ', '.join(x)
Název: Re:Python seznamy česky
Přispěvatel: pecko 04. 07. 2012, 16:56:01
alebo:


#!/usr/bin/env python
# -*- coding: utf-8 -*-

x = ['prvý', 'druhý', 'tretí', 'štvrtý', 'ľščťžýáí']
for i in x:
    print i,
Název: Re:Python seznamy česky
Přispěvatel: MilanČ 04. 07. 2012, 16:59:38
No, to funguje!? Vypsalo mi to první, druhý, ....
Asi mám v tom /usr/bin... něco jinak nastaveno, že? Přiznám se, že by se mi lépe psalo jen print x, kdyby to šlo.
Díky   MilanČ
Název: Re:Python seznamy česky
Přispěvatel: MilanČ 04. 07. 2012, 17:09:08
I druhý způsob mi funguje, s malou obměnou:   první druhý ...
Asi to ale není standard, že? Každopádně aspoň něco, díky.
MilanČ
Název: Re:Python seznamy česky
Přispěvatel: pecko 04. 07. 2012, 17:12:44
priamo print x nejde pri unicode. netusim preco:) az tak sa v pythone zatial nevrtam. ale ono v podstate ti to moze byt jedno pre tento pripad, si myslim. podla mna neni uplne idealne to takto pouzivat v aplikacii. daj si napr print x[4] a to uz bude ok aj napriamo
Název: Re:Python seznamy česky
Přispěvatel: MilanČ 04. 07. 2012, 17:34:42
Ok, díky.
MilanČ
Název: Re:Python seznamy česky
Přispěvatel: Dramon 04. 07. 2012, 17:53:28
Máte knihu o Python3, ale používáte Python2, což je vidět na funkci print. Proto jim to funguje a Vám ne. Zkuste změnit shebang z "#!/usr/bin/env python" na "#!/usr/bin/env python3" a pokud jej máte nainstalovaný, bude vše OK.

Pro pochopení, co se vlastně děje v Pythonu2:

Voláním print x voláte vlastně repr(x), která vrátí string:
"['prvn\xc3\\xad', 'druh\\xc3\\xbd', 't\\xc5\\x99et\\xc3\\xad', '\\xc4\\x8dtvrt\\xc3\\xbd']"
Při jeho tisku se ze dvou lomítek udělá jedno a vytiskne se:
['prvn\xc3\xad', 'druh\xc3\xbd', 't\xc5\x99et\xc3\xad', '\xc4\x8dtvrt\xc3\xbd']

Kdežto výrazy:
print x[0]
print " ".join(x)
for s in x: print s
ty všechny pracují přímo s elementy seznamu a pak je to tiskne správně.

Název: Re:Python seznamy česky
Přispěvatel: MilanČ 06. 07. 2012, 12:13:58
V Debianu je standardně nainstalována verze 2.6. Knížku mám od "Daryl Harms, Kenneth Mcdonald" "Začínáme programovat v jazyce Python", z roku 2003, kde se jedná o verzi 2.2.
   V knížce jsou zřejmě trochu chybičky, zprvu se vypisuje ['dvě', 'tři'] a o pár stránek dál už jen ['dve', 'tri']. Trojkovou verzi určitě jednou zkusím, asi jako všichni :)
Každopádně díky.
MilanČ
Název: Re:Python seznamy česky
Přispěvatel: Jan Ťulák 06. 07. 2012, 12:47:26
Osobně bych se na 2.x už vykašlal a začal rovnou s 3. Začínat s 2.x má, podle mě, smysl pouze z kompatibilních důvodů, pokud plánujete pracovat s už napsanými skripty.