2016-06-03 9 views
0

Ich suche nach einer Möglichkeit, eine Zeichenkette, die von einer HTML-Eingabe kommt, in 4 Variablen zu "schneiden", abhängig von der Länge der ursprünglichen Zeichenkette. Ich muss dies tun, weil ich die Zeichenfolge auf dem RaspberryPi LCD-Display anzeigen möchte. Da das LCD nur 20 Buchstaben pro Zeile anzeigen kann, dachte ich darüber nach, den Rest der Zeichenfolge in eine andere Variable zu setzen.Python Eine Zeichenkette auf mehrere Variablen zerschneiden

Im Moment sieht mein Pythoncode so aus.

def text1(text): 
    global TextA 
    TextA = text 
    TextA = urllib.request.unquote(TextA) 
    subprocess.Popen(["espeak", "-vde", TextA]) 
    subprocess.Popen(["python2", "/home/pibot/display.py", TextA]) 

Der Teil mit espeak funktioniert perfekt. Die Anzeigeausgabe funktioniert nur, wenn die Zeichenfolge weniger als 20 Buchstaben enthält.

Also im Grunde möchte ich TextA in TextA1 TextA2 TextA3 und TextA4 teilen.

Ich dachte darüber mit

if len(TextA) > 20 

tun, aber ich weiß wirklich nicht, wie man mit diesem erhalten weiter.

Vielen Dank im Voraus.

+1

Werfen Sie einen Blick auf [str.split()] (https://docs.python.org/2/library/stdtypes.html#str.split). – kazbeel

+0

Kann der TextA mit einem Trennzeichen (,; oder anderen) geteilt werden? Verwenden Sie split(). Oder brauchst du bestimmte Teile? Lookup String Slicing – RvdK

+0

Verwenden Sie die integrierte ['textwrap'] (https://docs.python.org/3/library/textwrap.html) Bibliothek, um dies zu tun. Es stellt sicher, dass Sie z.B. schneide ein Wort in zwei Hälften. –

Antwort

0

Sie können Strings wie dies in Scheiben schneiden:

>>> 'very long string, much longer than 20 characters'[0:20] 
'very long string, mu' 

Sie nicht brauchen, um zu überprüfen, wenn die Zeichenfolge länger als 20 Zeichen, können Sie einfach immer das Slicing auf Ihre subprocess Anweisung hinzufügen: TextA[0:20] nicht berühren die Zeichenfolge, wenn sie kürzer als 20 Zeichen ist.

0

Wenn Sie nicht die richtige Wortumbruch benötigen, versuchen, ein Verständnis wie folgt aus:

from math import ceil 
str = 'very long string, much longer than maxLength characters.'\ 
     'very long string, much longer than maxLength characters' 

maxLength = 20 
numStringsOut = int(ceil(len(str)/float(maxLength))) 

subStringList = [str[p * maxLength: p * maxLength + maxLength] 
       for p in range(numStringsOut)] 
print(subStringList) 

Ausgang:

['very long string, mu', 'ch longer than maxLe', 'ngth characters.very', ' long string, much l', 'onger than maxLength', ' characters'] 
Verwandte Themen