<string>[char]<string>[pos1:pos2]<string>[:pos2], <string>[pos2:],<string>[-pos2:]<string>.capitalize()<string>.isupper()list(cadena) : separa en caracteres<string>.split() : separa en palabras<delimitador>.join(<lista>): junta los elementos de la lista, poniendo en medio el delimitador (!!)len(string)empty = [], cadenas = ['uno','dos','tres','cuatro','cinco'], numeros = [1,2,3], mixta = ['uno',2,['tres',3],'cuatro']cadenas[1] = 'DOS' 'tres' in cadenas → truefor i in numeros:for i in range(len(mixta)):range(num): genera progresión aritmética de 0 a numrange(inicio,fin[,salto])otra_mixta = cadenas + numeros → ['uno','dos','tres','cuatro','cinco',1,2,3]numeros * 2 → [1,2,3,1,2,3]cadenas[1:] → ['dos','tres','cuatro','cinco']cadenas[:1] → ['uno','dos']cadenas[2:4] → ['tres','cuatro']cadenas[2:3]=['aaa','bbb'] → ['uno','aaa','bbb','cuatro','cinco']<list>.append() : añade elemento al final<list>.extend(<list>) : añade al final de la lista otra lista, cambia la primera.<list>.sort() : ordena<list>.pop(#elemento) : extrae elemento de la lista (lo devuelve) en función del índice del mismodel <list>[#elemento] : borra sin devolverlo en función del índice del mismo. permite slices<list>.remove(elemento) : borra el elemento si sabemos cual esprint list('cadena') : ['c','a','d','e','n','a']empty = dict()diccio = {}diccio[<clave>] = 'valor' len(<diccionario>)<diccionario>.get('<clave>',<default>) '<clave>' in diccio<diccionario>.values() se pueden hacer búsquedas en los valoresinverse[val] = [key] ????tupla = 'a','b','c','d' tupla = ('a','b','c','d')tupla = 'a', ← nótese la coma finaltype(tupla)tupla = tuple('cadena')print tupa → ('c','a','d','e','n','a')tupla[0]tupla[1:3] ← primero inclusive, último notuplaNueva = ('C',) + tupla[1:] → ('C','a','d','e','n','a')a,b = b,aadd='nombre@dominio.com → nombre,dominio = addr.split('@')def printall(*args):t = (7,3) ; divmod(*t) ← sin * da errors = 'abc' ; t = [0,1,2]; mizip = zip(s,t) → [('a', 0), ('b', 1), ('c', 2)]for letra,numero in mizip:print numero,letrafor indice,elemento in enumerate('abc'):items() para pasar el diccionario a tuplasdict() para pasar una lista de tuplas a diccionariod = dict(zip('abc',range(3))) → {'a': 0, 'c': 2, 'b': 1}sort se usa de una manera similar (ejemplo SORT en página 119)fout = open('fichero.txt','w') ; fout.write('una linea') ; fout.close()fout requiere stringstr()palabras=5 ; fout.write('Una cadena de %d palabras' % palabras)import os.getcwd().path.abspath('file') : devuelve path absoluto al fichero.path.exists('file').path.isdir('file').path.isfile('file').path.join(dirname,name).listdir(cwd) : devuelve una lista de ficheros y directorios de cwdtry: fin = open('fichero_no_existente') for line in fin: print line fin.close() except: print "Error"
import anydbmdb = anydbm.open('captions.db','c')db.close()import picklepickle.dumps(<anything>)pickle.loads(<string>)os.popen('ls -l') : popen está deprecado a favor de subprocessfilename = 'book.tex' cmd = 'md5sum ' + filename fp = os.popen(cmd) res = fp.read() stat = fp.close() // devuelve None si todo correcto // res contiene el resultado del comando
if __name__ == '__main__': codigo
name es una variable interna que se setea al arrancar el programa. Contiene main si se ejecuta como scriptreload, pero parece no ser muy estable o deseadoclass Point(object): attributes: x,y class Rectangle(object): attributes: width,height,corner box = Rectangle() box.width = 100.0 box.height = 200.0 box.corner = Point() box.corner.x = 0.0 box.corner.y = 0.0
import copy : copia objetos (aunque no objetos dentro del objeto si los hubiese, así que ese objeto embebido sería el mismo para los 2 objetos creados a través de copy.copy) → usar copy.deepcopyraise : provoca/lanza una excepción