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)?

45voto

Ashwini Chaudhary Punkte 231447

Verwenden Sie textwrap.wrap:

>>> import textwrap
>>> s = 'aaaaaaaaaaaaaaaaaaaaaaa'
>>> textwrap.wrap(s, 4)
['aaaa', 'aaaa', 'aaaa', 'aaaa', 'aaaa', 'aaa']

25voto

falsetru Punkte 353059

Mit List Comprehension und Generatorausdruck:

>>> s = 'aaaaaaaaaaaaaaaaaaaaaaa'
>>> [s[i:i+4] for i in range(0, len(s), 4)]
['aaaa', 'aaaa', 'aaaa', 'aaaa', 'aaaa', 'aaa']

>>> tuple(s[i:i+4] for i in range(0, len(s), 4))
('aaaa', 'aaaa', 'aaaa', 'aaaa', 'aaaa', 'aaa')

>>> s = 'a bcdefghi j'
>>> tuple(s[i:i+4] for i in range(0, len(s), 4))
('a bc', 'defg', 'hi j')

5voto

James Punkte 14623

Ein weiterer Lösungsansatz mit Regex:

>>> s = 'aaaaaaaaaaaaaaaaaaaaaaa'
>>> import re
>>> re.findall('[a-z]{4}', s)
['aaaa', 'aaaa', 'aaaa', 'aaaa', 'aaaa']
>>>

5voto

unutbu Punkte 769083

Sie könnten das grouper recipe verwenden, zip(*[iter(s)]*4):

In [113]: s = 'aaaaaaaaaaaaaaaaaaaaaaa'

In [114]: [''.join(item) for item in zip(*[iter(s)]*4)]
Out[114]: ['aaaa', 'aaaa', 'aaaa', 'aaaa', 'aaaa']

Beachten Sie, dass textwrap.wrap s nicht in Zeichenfolgen der Länge 4 aufteilen kann, wenn die Zeichenfolge Leerzeichen enthält:

In [43]: textwrap.wrap('I am a hat', 4)
Out[43]: ['I am', 'a', 'hat']

Das grouper-Rezept ist schneller als die Verwendung von textwrap:

In [115]: import textwrap

In [116]: %timeit [''.join(item) for item in zip(*[iter(s)]*4)]
100000 loops, best of 3: 2.41 µs pro Schleife

In [117]: %timeit textwrap.wrap(s, 4)
10000 loops, best of 3: 32.5 µs pro Schleife

Und das grouper-Rezept kann mit jedem Iterator verwendet werden, während textwrap nur mit Zeichenfolgen funktioniert.

1voto

Himanshu Punkte 666
s = 'abcdefghi'

k - Anzahl der Teile des Strings

k = 3

parts - Liste zum Speichern der Teile des Strings

parts = [s[i:i+k] for i in range(0, len(s), k)]

parts --> ['abc', 'def', 'ghi']

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