You are on page 1of 5

30/05/2015

ManipulandoStringsComPythonPythonBrasil

Ttulos Texto

ManipulandoStringsComPython
por:PeytonMcCullough
original: DevShed
Esse artigo vai dar uma geral nos vrios mtodos de manipular uma string, cobrindo coisas de mtodos bsicos at
expresses regulares em Python. Manipular uma string uma tcnica que todo programador Python devia se
familiarizar.

MtodosdeStrings
O jeito mais bsico de manipular strings atravs de mtodos que esto dentro delas (strings). Podemos fazer um
limitadonmerodetarefasemstringsatravsdessesmtodos.AbrasuaPythonShellevamoscriarumastringebrincar
umpoucocomelas.
>>>test='Thisisjustasimplestring.'
Vamosdarumavoltarpidaeusarafunolen.Elapodeserusadaparaencontrarotamanhodeumastringcontando
espacosecaracteresespeciais,ouseja,tudoquepertenceraessastring.
>>>len(test)
29
Beleza, agora vamos voltar aos mtodos que eu estava falando.Vamos pegar nossa string e substituir uma palavra
usandoomtodoreplace.
>>>test=test.replace('simple','short')
>>>test
'Thisisjustashortstring.'
Agora vamos contar o numero de vezes que a palavra especificada aparece na string, nesse caso estou apenas
procurandoporumcaracter'r'.
>>>test.count('r')
2
Podemostambmacharemqueposioestcertalevraoupalavra.
>>>test.find('r')
18
>>>test[18]
'r'
Separarumastringumacoisaqueeufrequentementefao.Omtodosplitusadoparaisso.
>>>test.split()
['This','is','just','a','short','string.']
Podemosescolheropontoaserseparado.
>>>test.split('a')
['Thisisjust','shortstring.']

http://wiki.python.org.br/ManipulandoStringsComPython

1/5

30/05/2015

ManipulandoStringsComPythonPythonBrasil

Parajuntarnossastringseparada,podemosusaromtodojoin.
>>>'some'.join(test.split('a'))
'Thisisjustsomeshortstring.'
Podemosbrincarcomacaixadasletras(maisculoouminsculo).Vamosdeixartudomaisculo.
>>>test.upper()
'THISISJUSTASHORTSTRING.'
Agoravamosdeixartudominsculo.
>>>test.lower()
'thisisjustashortstring.'
Vamosdeixarapenasaprimeiraletramaisculadeumastringminscula.
>>>test.lower().capitalize()
'Thisisjustashortstring.'
Podemosusaromtodotitle,quedeixaasletrasdecadapalavradastringmaiscula.
>>>test.title()
'ThisIsJustAShortString.'
Umatrocatambmpossvel.Oqueformaisculoviraminsculoeviceversa.
>>>test.swapcase()
'tHISISJUSTASHORTSTRING.'
Podemosrodaralgunstestesnumastringusandopoucosmtodos.Vamosverseastringdadatotalmentemaiscula.
>>>'UPPER'.isupper()
True
>>>'UpPEr'.isupper()
False
Domesmomodo,podemoschecarseastringdadaminscula.
>>>'lower'.islower()
True
>>>'Lower'.islower()
False
Checandoseelaumtitle,nocaso,todasaspalavrascomaprimeiraletramaiscula.
>>>'ThisIsATitle'.istitle()
True
>>>'ThisisAtitle'.istitle()
False
Podemoschecarseastringalfanumrica,ouseja,contmapenasletrasenmeros,semcaracteresespeciais.
>>>'aa44'.isalnum()
True
>>>'a$44'.isalnum()
False
possvelchecarseumastringcontmapenasletras.

http://wiki.python.org.br/ManipulandoStringsComPython

2/5

30/05/2015

ManipulandoStringsComPythonPythonBrasil

>>>'letters'.isalpha()
True
>>>'letters4'.isalpha()
False
Agorachecandoseelacontmapenasnmeros.
>>>'306090'.isdigit()
True
>>>'306090Triangle'.isdigit()
False
Podemoschecarseumastringcontmapenasespacos.
>>>''.isspace()
True
>>>''.isspace()
False
Falandoemespacos,podemosadicionarespacosemambososladosdeumastring.Vamosadicionarespacosnolado
direitodeumastring.
>>>'Astring.'.ljust(15)
'Astring.'
Paraadicionarespacosdoladoesquerdo,omtodorjustusado.
>>>'Astring.'.rjust(15)
'Astring.'
Omtodocenterusadoparacentralizarumastringdentrodeespacos.
>>>'Astring.'.center(15)
'Astring.'
Podemossepararosespacosdeambososladosdeumastring.
>>>'String.'.rjust(15).strip()
'String.'
>>>'String.'.ljust(15).rstrip()
'String.'

Expressesregulares
Expressesregularessoumaferramentamuitopoderosaemqualquerlinguagem.Elaspermitemquepadressejam
"achados"ou"casados"dentrodestrings.Aescomosubstituiopodemserfeitasnastringseaexpressoregular
"casar"comalgumapartedastring.OmduloquecuidadeexpressesregularesnoPythonore.Devoltanossa
shell...
>>>importre
Vamoscriarumastringsimplesparabrincarmosumpouco.
>>>test='ThisisfortestingregularexpressionsinPython.'
Vamos comear com padres simples para serem "achados" dentro da string, depois passamos para alguns mais
complexos.Existem dois mtodos para achar padres em strings com o mdulo re: search e match.Vamos dar uma
olhadanosearchprimeiro.

http://wiki.python.org.br/ManipulandoStringsComPython

3/5

30/05/2015

ManipulandoStringsComPythonPythonBrasil

>>>result=re.search('This',test)
Podemosextrairoresultadousandoomtodogroup.
>>>result.group(0)
'This'
Vocprovavelmenteestseperguntandosobreomtodogroupeporquepassamoszeroparaele.simples,eeuvou
explicar.Vejas,padressoorganizadosemgrupos,dessejeito:
>>>result=re.search('(Th)(is)',test)
Aquihdoisgruposdentrodosparenteses.Podemosextralosusandoomtodogroup.
>>>result.group(1)
'Th'
>>>result.group(2)
'is'
Passandozeroparaomtodoretornaambososgrupos.
>>>result.group(0)
'This'
Obenefciodosgrupossetornarclarodepoisquetrabalharmosdessejeitoempadresnormais.Primeirovamosdar
umaolhadanafunomatch.Elafuncionasimilarmentefunosearch,masexisteumadiferenacrucial.
>>>result=re.match('This',test)
>>>printresult
<_sre.SRE_Matchobjectat0x00994250>
>>>printresult.group(0)
'This'
>>>result=re.match('regular',test)
>>>printresult
None
NotequeNone (o valor nulo do Python) foi retornado, mesmo com a palavra "regular" dentro da string.Se voc no
entendeu,omtodomatchachaospadresnoinciodastring,eosearchexaminaafunointeira.Vocdeveestarse
perguntandosepossvelomatch encontar a palavra "regular" na string,mesmo a palavra no estando no incio da
string.Arespostasim,possveleissonoslevaaaprenderumpoucosobrepadresoupatterns.
Ocaracter'.'casacomqualquercaracter.Podemosusaromtodomatchparaacharapalavra"regular"colocandoum
pontoparacadaletraantesdele.Vamossepararissoemdoisgrupos.Umvaiconterospontos,eooutrovaicontero
"regular".
>>>result=re.match('(....................)(regular)',test)
>>>result.group(0)
'Thisisfortestingregular'
>>>result.group(1)
'Thisisfortesting'
>>>result.group(2)
'regular'
Viu s, conseguimos.No entanto ridculo ter que colocar todos esses pontos.A boa notcia que realmente no
precisamoscoloclos.Dumaolhadanissoelembrequeexistem20caracteresantesdapalavra"regular",scontar.
>>>result=re.match('(.{20})(regular)',test)
>>>result.group(0)
'Thisisfortestingregular'
>>>result.group(1)
'Thisisfortesting'
>>>result.group(2)
http://wiki.python.org.br/ManipulandoStringsComPython

4/5

30/05/2015

ManipulandoStringsComPythonPythonBrasil

'regular'
Assimbemmaisfcil.Agoravamosverumpoucomaissobrepadres.Aquicomovocpodeusarchavesdeumjeito
maisavanado.
>>>result=re.match('(.{10,20})(regular)',test)
>>>result.group(0)
'Thisisfortestingregular'
>>>result=re.match('(.{10,20})(testing)',test)
'Thisisfortesting'
Colocandodoisargumentos{10,20},querdizerquevocpodeacharqualquernmerodecaracteresemumaescala
(range),nessecasode10a20.Algumasvezes,noentanto,issopodemostrarnosumcomportamentoindesejado.Olhe
s:
>>>anotherTest='acat,adog,agoat,aperson'
Vamosfazerumaescala(range)decaracteres.
>>>result=re.match('(.{5,20})(,)',anotherTest)
>>>result.group(1)
'acat,adog,agoat'
Agoravamospegarsomente"acat".Eissopodeserfeitoadicionando"?"aofinaldaschaves:
>>>result=re.match('(.{5,20}?)(,)',anotherTest)
>>>result.group(1)
'acat'
Adicionandoumpontodeinterrogaofazafuno"achar"amenorquantidadepossveldecaracteres.Umpontode
interrogaofazissoenodeveserconfundidocomessepadroabaixo:
>>>anotherTest='012345'
>>>result=re.match('01?',anotherTest)
>>>result.group(0)
'01'
>>>result=re.match('0123456?',anotherTest)
>>>result.group(0)
'012345'
Comovocpodever,ocaracterantesdopontodeinterrogaoopcionalnaprocura.
Bom,agoraquevocjsabebrincarcomexpressesregularesdentrodoPython,aprendaumpoucomaissobreelas
em SitedoAurlioecompreoseuguiadeconsultarpida,muitotil.issoaipessoal,porhojes.Abraoatodos
EduardoOliva
Sobreestapgina
ManipulandoStringsComPython(editadapelaltimavezem2008092614:06:33por
localhost)

VisualizarTexto|VisualizarImpresso|Information|FazerUsurioAcompanhar|Anexos

"Python"eoslogosdePythonsomarcasregistradasdaPythonSoftwareFoundation,usadasaquimediantepermissodamesma.O
contedodestesiteestdisponvelsobostermosdaCreativeCommonsAttribution2.5excetoquandoexplicitamenteespecificadooutra
licena.

http://wiki.python.org.br/ManipulandoStringsComPython

5/5

You might also like