Extrair substring de uma string em Python
- Extraia substring usando string Slicing em Python
-
Extraia a substring usando o construtor
slice()
em Python - Extraia substring usando expressões regulares em Python
A string é uma sequência de caracteres. Lidamos com strings o tempo todo, não importa se estamos fazendo desenvolvimento de software ou programação competitiva. Às vezes, ao escrever programas, temos que acessar subpartes de uma string. Essas subpartes são mais comumente conhecidas como substrings. Uma substring é um subconjunto de uma string.
Em Python, podemos facilmente fazer essa tarefa usando corte de string ou expressão regular ou regex.
Extraia substring usando string Slicing em Python
Existem algumas maneiras de fazer o fatiamento de strings em Python. A indexação é o método mais básico e mais comumente usado. Consulte o código a seguir.
myString = "Mississippi"
print(myString[:]) # Line 1
print(myString[4:]) # Line 2
print(myString[:8]) # Line 3
print(myString[2:7]) # Line 4
print(myString[4:-1]) # Line 5
print(myString[-6:-1]) # Line 6
Resultado:
Mississippi
issippi
Mississi
ssiss
issipp
ssipp
No código acima, adicionamos []
colchetes no final da variável que armazena a string. Usamos essa notação para indexação. Dentro desses colchetes, adicionamos alguns valores inteiros que representam índices.
Este é o formato dos colchetes [start : stop : step]
(separados por dois pontos (:
)).
Por padrão, o valor de start
é 0
ou o primeiro índice, o valor de stop
é o último índice e o valor de step
é 1
. start
representa o índice inicial da substring, stop
representa o índice final da substring e step
representa o valor a ser usado para incrementar após cada índice.
A substring retornada está na verdade entre o índice start
e o índice stop - 1
porque a indexação começa em 0
em Python. Portanto, se quisermos recuperar Miss
de Mississippi
, devemos usar [0 : 4]
Os colchetes não podem estar vazios. Se você deseja usar os valores padrão, a quantidade necessária de dois-pontos :
deve ser adicionada com espaços entre para indicar a qual parâmetro você se refere. Consulte a lista a seguir para melhor compreensão.
[:]
-> Retorna a string inteira.[4 : ]
-> Retorna uma substring começando do índice4
até o último índice.[ : 8]
-> Retorna uma substring começando do índice0
até o índice7
.[2 : 7]
-> Retorna uma substring começando do índice2
até o índice6
.[4 : -1]
-> Retorna uma substring começando do índice4
até o penúltimo índice.-1
pode ser usado para definir o último índice em Python.[-6 : -1]
-> Retorna uma substring começando do sexto índice do final até o penúltimo índice.
Extraia a substring usando o construtor slice()
em Python
Em vez de mencionar os índices dentro dos colchetes, podemos usar o construtor slice()
para criar um objeto slice
para fatiar uma string ou qualquer outra sequência, como uma lista ou tupla.
O construtor slice(start, stop, step)
aceita três parâmetros, nomeadamente, start
, stop
e step
. Eles significam exatamente o mesmo que explicado acima.
O funcionamento de slice
é um pouco diferente em comparação com a notação de colchetes. O objeto de fatia é colocado dentro dos colchetes variáveis de string como este myString [<objeto 'slice'>]
.
Se um único valor inteiro, digamos x
, é fornecido ao construtor slice()
e é posteriormente usado para o fracionamento do índice, uma substring começando do índice 0
até o índice x - 1
será recuperada. Consulte o código a seguir.
myString = "Mississippi"
slice1 = slice(3)
slice2 = slice(4)
slice3 = slice(0, 8)
slice4 = slice(2, 7)
slice5 = slice(4, -1)
slice6 = slice(-6, -1)
print(myString[slice1])
print(myString[slice2])
print(myString[slice3])
print(myString[slice4])
print(myString[slice5])
print(myString[slice6])
Resultado:
Mis
Miss
Mississi
ssiss
issipp
ssipp
As saídas recebidas são autoexplicativas. Os índices seguem as mesmas regras definidas para a notação de colchetes.
Extraia substring usando expressões regulares em Python
Para expressão regular, usaremos o pacote integrado do Python re
.
import re
string = "123AAAMississippiZZZ123"
try:
found = re.search("AAA(.+?)ZZZ", string).group(1)
print(found)
except AttributeError:
pass
Resultado:
Mississippi
No código acima, a função search()
procura a primeira localização do padrão fornecido como um argumento na string passada. Ele retorna um objeto Match
. Um objeto Match
tem muitos atributos que definem a saída, como o span
da substring ou os índices inicial e final da substring.
print(dir(re.search('AAA(.+?)ZZZ', string)))
irá imprimir todos os atributos do objeto Match
. Note que alguns atributos podem estar faltando porque quando dir()
é usado, o método __dir__()
é chamado, e este método retorna uma lista de todos os atributos. E esse método é editável ou substituível.