Ich bin mir sicher, dass dies an vielen Stellen behandelt wird, aber ich kenne den genauen Namen der Aktion, die ich versuche, nicht, daher kann ich sie nicht wirklich nachschlagen. Ich habe 30 Minuten lang ein offizielles Python-Buch gelesen, um herauszufinden, wie das geht.

Problem: Ich muss eine Zeichenfolge in ein Feld mit einer bestimmten Länge einfügen.

Wenn das Namensfeld beispielsweise 15 Zeichen lang war und mein Name John war, würde ich "John" gefolgt von 11 Leerzeichen erhalten, um das 15-Zeichen-Feld zu erstellen.

Ich brauche dies, um für jede Zeichenfolge zu arbeiten, die für die Variable "Name" eingegeben wird.

Ich weiß, dass es wahrscheinlich eine Form der Formatierung sein wird, aber ich kann den genauen Weg dazu nicht finden. Hilfe wäre dankbar.

59
user2977230 1 Dez. 2013 im 10:05

6 Antworten

Beste Antwort

Dies ist mit format sehr einfach:

>>> a = "John"
>>> "{:<15}".format(a)
'John           '
89
Games Brainiac 1 Dez. 2013 im 06:20
name = "John" // your variable
result = (name+"               ")[:15] # this adds 15 spaces to the "name"
                                       # but cuts it at 15 characters
2
24 März 2014 im 18:09
string = ""
name = raw_input() #The value at the field
length = input() #the length of the field
string += name
string += " "*(length-len(name)) # Add extra spaces

Dadurch wird die Anzahl der benötigten Leerzeichen hinzugefügt, vorausgesetzt, das Feld hat die Länge> = die Länge des angegebenen Namens

2
Aswin Murugesh 1 Dez. 2013 im 06:08

Überprüfen Sie zunächst, ob die Länge der Zeichenfolge gekürzt werden muss, und fügen Sie dann Leerzeichen hinzu, bis sie so lang wie die Feldlänge sind.

fieldLength = 15
string1 = string1[0:15] # If it needs to be shortened, shorten it
while len(string1) < fieldLength:
    rand += " "
1
Matt 1 Dez. 2013 im 06:11

Ich habe dies nur für mein Problem aufgepeitscht und nur ein Leerzeichen hinzugefügt, bis die Länge der Zeichenfolge größer ist als die von Ihnen angegebene min_length.

def format_string(str, min_length):
    while len(str) < min_length:
        str += " "
    return str
1
dragon40226 17 Juli 2018 im 00:58

Sie können die ljust Methode für Zeichenfolgen verwenden.

>>> name = 'John'
>>> name.ljust(15)
'John           '

Beachten Sie, dass ljust den Namen nicht abschneidet, wenn er länger als 15 Zeichen ist. Wenn Sie genau 15 Zeichen haben möchten, können Sie die resultierende Zeichenfolge in Scheiben schneiden:

>>> name.ljust(15)[:15]
67
Ismail Badawi 1 Dez. 2013 im 06:13