it-swarm.com.de

Verwenden von Python Formatieren von Zeichenfolgen mit Listen

Ich konstruiere einen String s in Python 2.6.5, der eine unterschiedliche Anzahl von %s Token, die mit der Anzahl der Einträge in Liste x übereinstimmen. Ich muss eine formatierte Zeichenfolge ausschreiben. Das Folgende funktioniert nicht, zeigt aber, was ich versuche zu tun. In diesem Beispiel gibt es drei %s Token und die Liste hat drei Einträge.

s = '%s BLAH %s FOO %s BAR'
x = ['1', '2', '3']
print s % (x)

Ich möchte, dass die Ausgabezeichenfolge wie folgt lautet:

1 BLAH 2 FOO 3 BAR

90
SabreWolfy
print s % Tuple(x)

anstatt

print s % (x)
101
infrared

Sie sollten einen Blick auf die Format Methode von Python werfen. Sie könnten dann Ihre Formatierungszeichenfolge wie folgt definieren:

>>> s = '{0} BLAH {1} BLAH BLAH {2} BLAH BLAH BLAH'
>>> x = ['1', '2', '3']
>>> print s.format(*x)
'1 BLAH 2 BLAH BLAH 3 BLAH BLAH BLAH'
133
Cédric Julien

Im Anschluss an Ressourcenseite , wenn die Länge von x variiert, können wir Folgendes verwenden:

', '.join(['%.2f']*len(x))

um einen Platzhalter für jedes Element aus der Liste zu erstellen, x. Hier ist das Beispiel:

x = [1/3.0, 1/6.0, 0.678]
s = ("elements in the list are ["+', '.join(['%.2f']*len(x))+"]") % Tuple(x)
print s
>>> elements in the list are [0.33, 0.17, 0.68]
24
neobot

Da ich gerade von dieser coolen Sache erfahren habe (Indizieren in Listen aus einer Formatzeichenfolge), füge ich dieser alten Frage hinzu.

s = '{x[0]} BLAH {x[1]} FOO {x[2]} BAR'
x = ['1', '2', '3']
print s.format (x=x)

Ich habe jedoch immer noch nicht herausgefunden, wie das Schneiden (innerhalb des Formatstrings '"{x[2:4]}".format...,) und würde gerne herausfinden, ob jemand eine Idee hat, aber ich vermute, dass Sie das einfach nicht können.

16
Joran Beasley

Hier ist eine Zeile. Eine kleine improvisierte Antwort zur Verwendung des Formats mit print () in einer Liste.

Wie wäre es damit: (Python 3.x)

sample_list = ['cat', 'dog', 'bunny', 'pig']
print("Your list of animals are: {}, {}, {} and {}".format(*sample_list))

Lesen Sie hier die Dokumentation zur Verwendung von format () .

11
geekidharsh

Das war eine lustige Frage! Eine andere Möglichkeit, dies zu handhaben für Listen mit variabler Länge, besteht darin, eine Funktion zu erstellen, die die .format - Methode und das Entpacken von Listen voll ausnutzt. Im folgenden Beispiel verwende ich keine ausgefallenen Formatierungen, die sich jedoch leicht an Ihre Bedürfnisse anpassen lassen.

list_1 = [1,2,3,4,5,6]
list_2 = [1,2,3,4,5,6,7,8]

# Create a function that can apply formatting to lists of any length:
def ListToFormattedString(alist):
    # Create a format spec for each item in the input `alist`.
    # E.g., each item will be right-adjusted, field width=3.
    format_list = ['{:>3}' for item in alist] 

    # Now join the format specs into a single string:
    # E.g., '{:>3}, {:>3}, {:>3}' if the input list has 3 items.
    s = ','.join(format_list)

    # Now unpack the input list `alist` into the format string. Done!
    return s.format(*alist)

# Example output:
>>>ListToFormattedString(list_1)
'  1,  2,  3,  4,  5,  6'
>>>ListToFormattedString(list_2)
'  1,  2,  3,  4,  5,  6,  7,  8'
9
Matt P