Como alguém trunca uma string com 75 caracteres em Python?
É assim que é feito em JavaScript:
var data="saddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddsaddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddsadddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
var info = (data.length > 75) ? data.substring[0,75] + '..' : data;
len(data) > 77
dar conta dos pontos duplos (é inútil truncar apenas o último caractere apenas para substituí-lo por um ponto).Ainda mais curto:
fonte
Ainda mais conciso:
Se tiver menos de 75 caracteres, não haverá alterações.
fonte
Se você estiver usando o Python 3.4+, poderá usar a
textwrap.shorten
partir da biblioteca padrão:fonte
shorten()
trunca palavras , não caracteres únicos. Eu procurei, mas não parece haver uma maneira de configurarshorten()
ou umaTextWrapper
instância para recortar caracteres únicos e não palavras.Para uma solução Django (que não foi mencionada na pergunta):
Dê uma olhada no código-fonte do Truncator para apreciar o problema: https://github.com/django/django/blob/master/django/utils/text.py#L66
Sobre o truncamento com o Django: Truncamento de HTML no Django
fonte
Você pode usar esta linha:
fonte
[:n]
chamado para que eu possa procurar na documentação?Com regex:
Seqüências longas são truncadas:
Strings mais curtas nunca são truncadas:
Dessa forma, você também pode "cortar" a parte do meio da string, o que é melhor em alguns casos:
fonte
Este método não usa nenhum se:
data[:75] + bool(data[75:]) * '..'
fonte
fonte
75
) em uma variável para evitar inconsistências.limit = 75; info = data[:limit] + '..' * (len(data) > limit)
Mais uma solução. Com
True
eFalse
você recebe um pequeno feedback sobre o teste no final.fonte
Isso apenas em:
fonte
fonte
Na verdade, você não pode "truncar" uma cadeia de caracteres Python como uma cadeia C alocada dinamicamente. Strings em Python são imutáveis. O que você pode fazer é cortar uma sequência como descrito em outras respostas, produzindo uma nova sequência contendo apenas os caracteres definidos pelas compensações e pela etapa da fatia. Em alguns casos (não práticos), isso pode ser um pouco chato, como quando você escolhe Python como sua linguagem de entrevista e o entrevistador pede para você remover caracteres duplicados de uma string no local. Doh.
fonte
fonte
Não há necessidade de uma expressão regular, mas você deseja usar a formatação de sequência em vez da concatenação de sequência na resposta aceita.
Esta é provavelmente a maneira Python mais canônica de truncar a string
data
com 75 caracteres.fonte
saddddddd...
string se transforma111111...
:) No entanto, eu sei que é um erro de copiar e colar e concordo com você sobre expressões regulares.Aqui está uma função que eu fiz como parte de uma nova classe String ... Permite adicionar um sufixo (se a string for do tamanho após o corte e a adição for longa o suficiente - embora você não precise forçar o tamanho absoluto)
Eu estava no processo de mudar algumas coisas para que houvesse alguns custos lógicos inúteis (se _ truncados ... por exemplo), onde não é mais necessário e há um retorno no topo ...
Mas, ainda é uma boa função para truncar dados ...
fonte
fonte