Geben Sie die ersten 100 Zeichen in einer Zeichenfolge aus

108

Kann scheinen, eine Teilstring-Funktion in Python zu finden.

Angenommen, ich möchte die ersten 100 Zeichen in einer Zeichenfolge ausgeben. Wie kann ich das tun?

Ich möchte es auch sicher machen, wenn die Zeichenfolge 50 Zeichen umfasst, sollte sie nicht fehlschlagen.

Blankman
quelle
2
Die Folge dieser Frage ist: Gute Grundierung für Python-Slice-Notation
Greg Hewgill
1
Was meinst du mit "Zeichen"? Codepunkte, Graphemcluster oder Codeeinheiten? Beim Schneiden werden Codeeinheiten gezählt, die möglicherweise nicht das gewünschte Ergebnis liefern.
Philipp

Antworten:

168
print my_string[0:100]
icktoofay
quelle
5
Es funktioniert auch auch für Zeichenfolgen, die kürzer als 100 sind print 'foo'[:100](beachten Sie, dass dies len('foo')3 ist. Selbst wenn foo[100]dies nicht funktioniert, funktioniert es)
Rodrigo Laguna
67

Aus dem Python-Tutorial :

Entartete Slice-Indizes werden ordnungsgemäß behandelt: Ein zu großer Index wird durch die Zeichenfolgengröße ersetzt . Eine Obergrenze, die kleiner als die Untergrenze ist, gibt eine leere Zeichenfolge zurück.

So ist es sicher zu bedienen x[:100].

czchen
quelle
27

Einfach:

print mystring[:100]
Arkady
quelle
7

Um Philipps Bedenken zu beantworten (in den Kommentaren), funktioniert das Schneiden auch für Unicode-Strings

>>> greek=u"αβγδεζηθικλμνξοπρςστυφχψω"
>>> print len(greek)
25
>>> print greek[:10]
αβγδεζηθικ

Wenn Sie den obigen Code als Skript ausführen möchten, setzen Sie diese Zeile oben

# -*- coding: utf-8 -*-

Wenn Ihr Editor nicht in utf-8 speichert, ersetzen Sie die korrekte Codierung

John La Rooy
quelle
2
Nicht herabsetzen Ihre Antwort, aber es gibt nur 24 Buchstaben in Griechisch, ςund σsind die gleichen Buchstaben :-)
paxdiablo
4
@paxdiablo, doh! Ich habe sie von der Wikipedia-Seite kopiert. Zum Glück habe ich die Variable greek_alphabetdamals nicht benannt :)
John La Rooy
4

Das Schneiden von Arrays erfolgt mit [first:last+1].

Ein Trick, den ich häufig benutze, besteht darin, zusätzliche Informationen mit Ellipsen anzuzeigen. Wenn Ihr Feld also aus hundert Zeichen besteht, würde ich Folgendes verwenden:

if len(s) <= 100:
    print s
else:
    print "%s..."%(s[:97])

Und ja, ich weiß, dass ()dies in diesem Fall für den %Formatierungsoperator überflüssig ist , es ist nur mein Stil.

paxdiablo
quelle
Ich denke, dies war als Denkanstoß gedacht, aber im Fall des OP würde ich wahrscheinlich nicht vorschlagen, dies zu tun. Das Ergebnis wäre eine Zeichenfolge, die Sie auf Inhalte prüfen müssten, um sie weiter zu trimmen, oder ähnliches. In diesem Fall würde ich mir vorstellen, dass man entweder möchte, dass diese Zahl variabel ist und das Ergebnis immer korrekt ist, oder dass die Zahl festgelegt wird und die Behandlung entweder etwas Sinnvolles erzeugt oder Fehler verursacht oder im Falle eines Fehlers ordnungsgemäß zurückgegeben wird. Ich kann mir nicht viele Fälle vorstellen, außer von Menschen lesbare Informationen zu liefern, in denen ich einer Zeichenfolge willkürlich Text hinzufügen möchte.
3

Die meisten vorherigen Beispiele lösen eine Ausnahme aus, falls Ihre Zeichenfolge nicht lang genug ist.

Ein anderer Ansatz ist zu verwenden 'yourstring'.ljust(100)[:100].strip().

Dies gibt Ihnen die ersten 100 Zeichen. Möglicherweise erhalten Sie eine kürzere Zeichenfolge, falls die letzten Zeichen Ihrer Zeichenfolge Leerzeichen sind.

Julien Kieffer
quelle
Vielen Dank. Seltsam, warum die besten Antworten auf Stackoverflow nicht leicht erkannt und bewertet werden.
Basil Musa
2

String-Formatierung mit % ist eine gute Möglichkeit, dies zu handhaben. Hier sind einige Beispiele.

Der Formatierungscode '%s'wird '12345'in eine Zeichenfolge konvertiert , ist jedoch bereits eine Zeichenfolge.

>>> '%s' % '12345'

'12345'

'%.3s' Gibt an, dass nur die ersten drei Zeichen verwendet werden sollen.

>>> '%.3s' % '12345'

'123'

'%.7s'sagt, die ersten sieben Zeichen zu verwenden, aber es gibt nur fünf. Kein Problem.

>>> '%.7s' % '12345'

'12345'

'%7s' Verwendet bis zu sieben Zeichen und füllt fehlende Zeichen mit Leerzeichen auf der linken Seite.

>>> '%7s' % '12345'

'  12345'

'%-7s' ist das Gleiche, außer dass rechts fehlende Zeichen ausgefüllt werden.

>>> '%-7s' % '12345'

'12345  '

'%5.3' sagt, benutze die ersten drei Zeichen, aber fülle sie mit Leerzeichen auf der linken Seite, um insgesamt fünf Zeichen zu erhalten.

>>> '%5.3s' % '12345'

'  123'

Gleiches außer rechts ausfüllen.

>>> '%-5.3s' % '12345'

'123  '

Kann auch mit mehreren Argumenten umgehen!

>>> 'do u no %-4.3sda%3.2s wae' % ('12345', 6789)

'do u no 123 da 67 wae'

Wenn Sie noch mehr Flexibilität benötigen, str.format()ist auch verfügbar. Hier ist die Dokumentation für beide.

OrangeSherbet
quelle
0
[start:stop:step]

Wenn Sie also nur 100 erste Zeichen aufnehmen möchten , verwenden Sie your_string[0:100]oder your_string[:100]Wenn Sie nur das Zeichen an einer geraden Position aufnehmen möchten, verwenden Sie. your_string[::2] Die "Standardwerte" für den Start sind 0, für das Stoppen der Zeichenfolge und für Schritt 1. Also Wenn Sie keinen seiner Werte angeben und ':' eingeben, wird der Standardwert verwendet.

Szymek G.
quelle