Python - práce s řetězci (3. díl)

Napsal (») 20. 12. 2010 v kategorii Programování, přečteno: 2762×
banan/img/python-logo-glassy.png

Práce s řetězci je v jazyce Python velmi příjemná, je akorát potřeba vědět jak na to. Pro ty kteří si význam slova "řetězec" přesně nevybavují, je to posloupnost znaků, jedno slovo či jedno písmeno. Řetězce v Pythonu se značí do jednotných, dvojitých či trojitých uvozovek. Je to celkem jedno, jen na začátku a konci musí být stejné. Ty trojité se používají u dlouhých textů, které přesahují přes několik řádků.

Příklad přiřazení řetězce do proměnné:

>>> ahoj = "Ahoj jak se vede?" #řetězec jsme právě uložili do proměnné ahoj
>>> print ahoj #vypíše obsah proměnné ahoj
Ahoj jak se vede?

Řetězce můžeme

  • sčíat ["neco" + "neco"]
  • násobit celým číslem [*]
  • zjistit počet znaků [len(retezec)]
  • umíme i načíst od uživatele nějaký text [x = input('Zadej text: ')]

Víte, že 1+1=11...?

Řetězce se v Pythonu dají sčítat pomocí klasické operace sčítání. Výsledkem je vždy spojení těchto řetězců.

>>> print "Ahoj" + ", jak se máš?"
Ahoj, jak se máš?

Řetězce jsou neměnné. Pokud je dáme do proměnné, tak to může vypadat, že se mění, ale ve skutečnosti vždy vzniká nová proměnná se stejným jménem, ale jiným obsahem.

>>> auto = "Auto" #klasická proměnná auto
>>> auto = auto + ' je červené'  #vytvoření nové proměnné se stejným jménem
>>> print auto #vytiskneme
Auto je červené

Metody: další hrátky s textem


Násobení řetězců:

>>> x = "na"
>>> print x*10
nananananananananana

Zjištění délky řetězce:

>>> veta = "Toto je veta"
>>> print len(veta) #vypíše číslo reprezentující počet znaků v řetězci
12

Přetypování

Pokud je v řetězci jen znak čísla, lze jej přetypovat tak aby např. součet dával součet hodnot...

>>> cislo1string= "1" #textova promenna
>>> cislo2int= int(cislo1)
>>> print type(cisloObycejne) #Vypíše datový typ int(celá čísla)
print cislo2int + 2 # vysledek je 3

A naopak...

>>> cislostring=str(12) #převod cisla 12 na string = "12"
>>> print cislostring * 2
1212
>>> print type(cisloText) #Vypíše datový typ proměnné cislostring

V každém řetězci je vždy první, druhé, …, poslední písmeno. I v Pythonu tomu tak je, až na malý rozdíl, že první písmeno má index 0, tedy je to nulté písmeno. Logicky tedy poslední písmeno má index nebo-li pořadí délka-1; častěji se však říká, že má index jen −1. Na přístup k jednotlivým písmenům, znakům se používají hranaté závorky.


>>> pozdrav = "Ahoj"
>>> print pozdrav[0] #první = (nultý) prvek
A
>>> print pozdrav[1] #druhý prvek
h

Umíme i provádět tzv. řezy, tj. vyjmout ze slova, věty jen určitou část:

>>> obsah="Zaciname s Pythonem"
>>> print obsah[11:17]   
Python

Můžeme také procházet znaky ve větě. Nedovedu si představit snadnější průchod textem, než má Python. Více než intuitivně se používá cyklus FOR.

>>> veta="Kobyla ma maly bok"

>>> for znak in veta:
print znak
if znak=="a":
print "Nasel jsem 'a'"

Procházíme všemi znaky v textu dokud nenarazíme na 'a'.

Je tam to písmeno?

Budeme procházet text dokud nenarazíme na písmeno.

>>> if "m" in veta:
print "Veta obsahuje alespon jedno pismeno 'm'"

naschledanou příště...

Štítky: Python
Hodnocení:     nejlepší   1 2 3 4 5   odpad
Facebook Twitter Topčlánky.cz Linkuj.cz

Komentáře

Knahaka z IP 178.105.143.*** | 22.1.2011 00:13
Ahoj,

bohuzel to nefunguje:

Python 2.7 (r27:82525, Jul  4 2010, 09:01:59) [MSC v.1500 32 bit (Intel)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> veta = "Kobyla ma maly bok"
>>> for znak in veta:
... print znak
  File "<stdin>", line 2
    print znak
        ^
IndentationError: expected an indented block
Knahaka z IP 178.105.143.*** | 22.1.2011 00:18
Ahoj,

to druhe bohuzel taky ne:

>>> veta = "Kobyla ma maly bok"
>>> for znak in veta:
... if "m" in veta:
  File "<stdin>", line 2
    if "m" in veta:
    ^
| 22.1.2011 08:27
Pře print znak a if "m" in veta: nedávejte před tím tečky. Jen Tab pro odsazení pokud to píšete v editoru (jinak to v konzoli Pythonu udělá automaticky).
n00b z IP 62.245.81.*** | 3.2.2011 23:23
nezminit neco jako 'neumimpython'[:] 'neumimpython'[:-1] 'neumimpython'[::-1] 'neumimpython'[::3] apod....? proc pisou serialy lidi, ktery to samy neumi?
| 10.2.2011 23:19
Je tam špatné formátování textu bohužel, za to se samozřejmě omlouvám. Šlo mi hlavně o to aby znázornil odsazení. Takže tedy IGNORUJTE TEČKY a  MÍSTO NICH TABULÁTOR. Odsazení v příkazovém řádku/terminálu se po cyklech a podmínkách vytváří AUTOMATICKY.


Nový komentář

Téma:
Jméno:
Notif. e-mail *:
Komentář:
  [b] [obr]
Odpovězte prosím číslicemi: Součet čísel třináct a sedm