[python] Hledani v retezci

Petr Prikryl PrikrylP na skil.cz
Čtvrtek Červenec 7 10:55:36 CEST 2005


Martin Jedlička...
> [...] Mam ulozenou v promenne cestu napr. 
> /mnt/data/cvs/test/projekt a potreboval bych v teto promenne 
> najit retezece, ktere jsou obsazeny mezi lomitky. 
> Tedy projit ten retezec a vsechny retezce mezi lomitky 
> ukladat do nejakeho pole i s poslednim retezcem. Jde mi 
> zejmena o posledni retezec (napr. projekt) a predposledni
> (napr.test)

Zjevně jde o použití v unixovském systému. Pak lze použít
jinými doporučovanou metodu s.split('/'), kde s je reference
na uložený řetězec.

Doporučoval bych ale spíše využít funkcí pro práci s cestou,
které nejsou závislé na operačním systému, tedy modulu os.path. 
Pak nebude záviset na tom, zda se v konkrétním systému používají
lomítka normální či obrácená. Doporučuji prostudovat následující 
funkce z os.path:

  abspath, normpath,
  commonprefix,
  split, dirname, basename,
  join

Lze například psát

  import os

  s = '/mnt/data/cvs/test/projekt'
 
a pak

  adr1 = os.path.basename(s)                   # projekt
  adr2 = os.path.basename(os.path.dirname(s))  # test
  
nebo

  t = os.path.split(s)    # ('/mnt/data/cvs/test', 'projekt')

  adr1 = t[1]
  adr2 = os.path.basename(t[0])

Použití os.path se může ze začátku zdát těžkopádné,
ale často se to později vyplácí.

pepr



Další informace o konferenci Python