32 Stimmen

String in gleich große Stücke aufteilen

Wie könnte ich einen String wie 'aaaaaaaaaaaaaaaaaaaaaaa' in 4er-Tupel aufteilen, z.B. in (aaaa, aaaa, aaaa)?

0voto

s = 'abcdef'

Wir müssen in Teile von 2 aufteilen

[s[pos:pos+2] for pos,i in enumerate(list(s)) if pos%2 == 0]

Antwort:

['ab', 'cd', 'ef']

0voto

miragessee Punkte 311

Ich denke, diese Methode ist einfacher. Aber die Nachrichtenlänge muss mit split_size aufgeteilt werden. Oder Buchstaben müssen zur Nachricht hinzugefügt werden. Beispiel: message = "lorem ipsum_", dann kann der hinzugefügte Buchstabe gelöscht werden.

message = "lorem ipsum"

array = []

temp = ""

split_size = 3

for i in range(1, len(message) + 1):
    temp += message[i - 1]

    if i % split_size == 0:
        array.append(temp)
        temp = ""

print(array)

Output: ['lor', 'em ', 'ips']

0voto

BPL Punkte 9522

Hier ist eine weitere mögliche Lösung für das gegebene Problem:

def split_by_length(text, width):
    width = max(1, width)
    chunk = ""
    for v in text:
        chunk += v
        if len(chunk) == width:
            yield chunk
            chunk = ""

    if chunk:
        yield chunk

if __name__ == '__main__':
    x = "123456789"
    for i in range(20):
        print(i, list(split_by_length(x, i)))

Ausgabe:

0 ['1', '2', '3', '4', '5', '6', '7', '8', '9']
1 ['1', '2', '3', '4', '5', '6', '7', '8', '9']
2 ['12', '34', '56', '78', '9']
3 ['123', '456', '789']
4 ['1234', '5678', '9']
5 ['12345', '6789']
6 ['123456', '789']
7 ['1234567', '89']
8 ['12345678', '9']
9 ['123456789']
10 ['123456789']
11 ['123456789']
12 ['123456789']
13 ['123456789']
14 ['123456789']
15 ['123456789']
16 ['123456789']
17 ['123456789']
18 ['123456789']
19 ['123456789']

0voto

CodeNewbie Punkte 53

Der kindische Weg

def wrap(string, max_width):
    i=0
    strings = []
    s = ""
    for x in string:
        i+=1
        if i == max_width:
            s = s + x
            strings.append(s)
            s = ""
            i = 0
        else:
            s = s + x
    strings.append(s)
    return strings

wrap('ABCDEFGHIJKLIMNOQRSTUVWXYZ',4)
# output: ['ABCD', 'EFGH', 'IJKL', 'IMNO', 'QRST', 'UVWX', 'YZ']

0voto

Diese Funktion verwendet Rekursion.

s = 'dasffvvcsadcadscsdsdcsadssdfsdfsdfdfs'

delimiter = 5

def reccursive_split(data, delimiter, current_list = []):
    if len(data) > delimiter:
        current_list.append(data[:delimiter])
        return reccursive_split(data[delimiter:], delimiter, current_list)
    else:
        current_list.append(data)
        return current_list

print(reccursive_split(s, delimiter))

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X