Wie schneidet man eine Zeichenfolge in Python auf 75 Zeichen ab?
So wird es in JavaScript gemacht:
var data="saddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddsaddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddsadddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
var info = (data.length > 75) ? data.substring[0,75] + '..' : data;
len(data) > 77
, um die doppelten Punkte zu berücksichtigen (es ist sinnlos, nur das letzte Zeichen abzuschneiden, nur um es durch einen Punkt zu ersetzen).Noch kürzer:
quelle
Noch prägnanter:
Wenn es weniger als 75 Zeichen sind, wird keine Änderung vorgenommen.
quelle
Wenn Sie Python 3.4+ verwenden, können Sie Folgendes
textwrap.shorten
aus der Standardbibliothek verwenden:quelle
shorten()
abgeschnitten werden , keine einzelnen Zeichen. Ich habe gesucht, aber es scheint keine Möglichkeit zu geben , einzelne Zeichen und keine Wörter zu konfigurieren oder eine Instanz zu beschneiden.shorten()
TextWrapper
Für eine Django-Lösung (die in der Frage nicht erwähnt wurde):
Schauen Sie sich den Quellcode von Truncator an, um das Problem zu erkennen: https://github.com/django/django/blob/master/django/utils/text.py#L66
In Bezug auf das Abschneiden mit Django: Django HTML-Kürzung
quelle
Sie könnten diesen Einzeiler verwenden:
quelle
[:n]
heißt es, damit ich es in der Dokumentation nachschlagen kann?Mit Regex:
Lange Zeichenfolgen werden abgeschnitten:
Kürzere Zeichenfolgen werden niemals abgeschnitten:
Auf diese Weise können Sie auch den mittleren Teil der Saite "schneiden", was in einigen Fällen schöner ist:
quelle
Diese Methode verwendet keine, wenn:
data[:75] + bool(data[75:]) * '..'
quelle
quelle
75
) in eine Variable extrahieren , um Inkonsistenzen zu vermeiden.limit = 75; info = data[:limit] + '..' * (len(data) > limit)
Noch eine andere Lösung. Mit
True
undFalse
Sie erhalten am Ende ein kleines Feedback zum Test.quelle
Dies nur in:
quelle
quelle
Sie können eine Python-Zeichenfolge nicht wie eine dynamisch zugewiesene C-Zeichenfolge "abschneiden". Zeichenfolgen in Python sind unveränderlich. Sie können eine Zeichenfolge wie in anderen Antworten beschrieben in Scheiben schneiden und eine neue Zeichenfolge erstellen, die nur die Zeichen enthält, die durch die Schichtversätze und den Schritt definiert sind. In einigen (nicht praktischen) Fällen kann dies etwas ärgerlich sein, z. B. wenn Sie Python als Interviewsprache auswählen und der Interviewer Sie auffordert, doppelte Zeichen aus einer vorhandenen Zeichenfolge zu entfernen. Doh.
quelle
quelle
Es ist kein regulärer Ausdruck erforderlich, Sie möchten jedoch die Zeichenfolgenformatierung anstelle der Zeichenfolgenverkettung in der akzeptierten Antwort verwenden.
Dies ist wahrscheinlich die kanonischste, pythonischste Methode, um die Zeichenfolge
data
mit 75 Zeichen abzuschneiden .quelle
saddddddd...
Zeichenfolge verwandelt111111...
:) Ich weiß, dass es sich um einen Tippfehler handelt, und ich stimme Ihnen in Bezug auf reguläre Ausdrücke zu.Hier ist eine Funktion, die ich als Teil einer neuen String-Klasse erstellt habe ... Sie ermöglicht das Hinzufügen eines Suffix (wenn der String nach dem Zuschneiden die Größe hat und das Hinzufügen lang genug ist - obwohl Sie die absolute Größe nicht erzwingen müssen).
Ich war dabei, ein paar Dinge zu ändern, so dass es einige nutzlose Logikkosten gibt (wenn _truncate ... zum Beispiel), bei denen es nicht mehr notwendig ist und es eine Rendite an der Spitze gibt ...
Aber es ist immer noch eine gute Funktion zum Abschneiden von Daten ...
quelle
quelle