until - substring python example




Existe uma maneira de substring uma string? (8)

Existe uma maneira de subseqüenciar uma string em Python, para obter uma nova string do terceiro caractere até o final da string?

Talvez como myString[2:end] ?

Sim, isso realmente funciona se você atribuir ou bind o nome, end , ao singleton constante, None :

>>> end = None
>>> myString = '1234567890'
>>> myString[2:end]
'34567890'

A notação de fatia tem 3 argumentos importantes:

  • começar
  • Pare
  • degrau

Seus padrões quando não são dados são None - mas podemos passá-los explicitamente:

>>> stop = step = None
>>> start = 2
>>> myString[start:stop:step]
'34567890'

Se deixar a segunda parte significa 'até o fim', se você deixar a primeira parte, ela começa do começo?

Sim, por exemplo:

>>> start = None
>>> stop = 2
>>> myString[start:stop:step]
'12'

Note que incluímos o início na fatia, mas apenas aumentamos, e não incluímos, paramos.

Quando a etapa é None , por padrão, a fatia usa 1 para a etapa. Se você pisar com um número inteiro negativo, o Python é inteligente o suficiente para ir do final ao início.

>>> myString[::-1]
'0987654321'

Eu explico a notação de fatia em grande detalhe na minha resposta à notação de fatia Explain.

Existe uma maneira de subseqüenciar uma string em Python, para obter uma nova string do terceiro caractere até o final da string?

Talvez como myString[2:end] ?

Se deixar a segunda parte significa 'até o fim', se você deixar a primeira parte, ela começa do começo?


Apenas por completude, como ninguém mais mencionou. O terceiro parâmetro para uma fatia de matriz é um passo. Então, reverter uma string é tão simples quanto:

some_string[::-1]

Ou selecionar caracteres alternativos seria:

"H-e-l-l-o- -W-o-r-l-d"[::2] # outputs "Hello World"

A capacidade de avançar e retroceder na sequência mantém consistência com a capacidade de organizar fatias do início ou do fim.


Isso é bem simples:

s = 'Hello, World!'
print(s[:]) # prints "Hello, World!"
print(s[:5]) # prints Hello
print(s[5:]) # prints , World!
print(s[3:7]) # prints "lo, "

Substr () normalmente (ou seja, PHP e Perl) funciona desta maneira:

s = Substr(s, beginning, LENGTH)

Então os parâmetros estão beginning e LENGTH .

Mas o comportamento do Python é diferente; espera início e um após END (!). Isso é difícil de detectar por iniciantes. Então a substituição correta para Substr (s, início, LENGTH) é

s = s[ beginning : beginning + LENGTH]

Um exemplo parece estar faltando aqui: cópia cheia (superficial).

>>> x = "Hello World!"
>>> x
'Hello World!'
>>> x[:]
'Hello World!'
>>> x==x[:]
True
>>> 

Esse é um idioma comum para criar uma cópia de tipos de sequência (não de sequências internadas). [:] Superficial copia uma lista, veja python-list-slice-used-for-no-obvious-reason .


Uma maneira comum de conseguir isso é através do fatiamento de String. MyString[a:b] fornece uma substring do índice a para (b - 1)


Você tem isso aí, exceto por "fim". É chamado notação de fatia. Seu exemplo deve ler:

new_sub_string = myString[2:]

Se você deixar de fora o segundo parâmetro, é implicitamente o final da string.


>>> x = "Hello World!"
>>> x[2:]
'llo World!'
>>> x[:2]
'He'
>>> x[:-2]
'Hello Worl'
>>> x[-2:]
'd!'
>>> x[2:-2]
'llo Worl'

O Python chama esse conceito de "fatiar" e funciona em mais do que apenas strings. Dê uma olhada here para uma introdução abrangente.





string