Pode parecer encontrar uma função substring em python.
Digamos que eu queira gerar os primeiros 100 caracteres em uma string, como posso fazer isso?
Eu quero fazer isso com segurança também, medindo se a string tem 50 caracteres, ela não deve falhar.
Respostas:
fonte
print 'foo'[:100]
(note quelen('foo')
é 3, então mesmo quandofoo[100]
não funciona, funciona)Do tutorial de python :
Portanto, é seguro usar
x[:100]
.fonte
Fácil:
fonte
Para responder à preocupação de Philipp (nos comentários), o fatiamento funciona bem para strings Unicode também
Se você deseja executar o código acima como um script, coloque esta linha no topo
Se o seu editor não salvar em utf-8, substitua a codificação correta
fonte
ς
eσ
são a mesma letra :-)greek_alphabet
então :)O fatiamento de matrizes é feito com
[first:last+1]
.Um truque que costumo usar muito é indicar informações extras com reticências. Então, se o seu campo tiver cem caracteres, eu usaria:
E sim, eu sei que
()
é supérfluo neste caso para o%
operador de formatação, é apenas o meu estilo.fonte
A maioria dos exemplos anteriores gerará uma exceção caso sua string não seja longa o suficiente.
Outra abordagem é usar
'yourstring'.ljust(100)[:100].strip()
.Isso lhe dará os primeiros 100 caracteres. Você pode obter uma string mais curta no caso dos últimos caracteres da string serem espaços.
fonte
A formatação de strings
%
é uma ótima maneira de lidar com isso. Aqui estão alguns exemplos.O código de formatação é
'%s'
convertido'12345'
em uma string, mas já é uma string.'%.3s'
especifica o uso apenas dos três primeiros caracteres.'%.7s'
diz para usar os primeiros sete caracteres, mas existem apenas cinco. Sem problemas.'%7s'
usa até sete caracteres, preenchendo os caracteres ausentes com espaços à esquerda.'%-7s'
é a mesma coisa, exceto preencher os caracteres ausentes à direita.'%5.3'
diz para usar os três primeiros caracteres, mas preencha com espaços à esquerda para um total de cinco caracteres.Mesma coisa, exceto preencher à direita.
Também pode lidar com vários argumentos!
Se você precisar de ainda mais flexibilidade, também
str.format()
está disponível. Aqui está a documentação para ambos.fonte
Portanto, se você quiser pegar apenas 100 primeiros caracteres, use
your_string[0:100]
ouyour_string[:100]
Se quiser pegar apenas o caractere na posição par, use.your_string[::2]
Os "valores padrão" para o início são 0, para o final - len da string e para a etapa - 1. Então quando você não fornecer um de seus e colocar ':', ele usará o valor padrão.fonte