2012-04-09 10 views
7

Potrzebuję wstawić spację po określonej liczbie znaków w ciągu znaków. Tekst jest zdaniem bez spacji i musi być podzielony spacjami po n znakach.Jak wstawić spację po określonej liczbie znaków w ciągu znaków przy użyciu Pythona?

tak powinno być coś takiego.

thisisarandomsentence 

i chcę go aby powrócić jako:

this isar ando msen tenc e 

funkcji, która mam to:

def encrypt(string, length): 

jest tam mimo to zrobić na pytona?

+0

Ktoś zadał pytanie niemal dokładnie tak ... http://stackoverflow.com/questions/10055631/how- do-i-insert-spacje-w-łańcuch-funkcja-zakresu-funkcja/10055656 # 10055656 – jamylak

+0

możliwy duplikat: http://stackoverflow.com/questions/10055631/how-do-i-insert-space -into-string-using-th e-range-function –

+0

Również to jest trochę podobne: http://stackoverflow.com/questions/10061008/generating-all-n-tuples-from-a-string/10061368 – jamylak

Odpowiedz

11
def encrypt(string, length): 
    return ' '.join(string[i:i+length] for i in xrange(0,len(string),length)) 

encrypt('thisisarandomsentence',4) daje

'this isar ando msen tenc e' 
+0

TO DZIAŁA !!! jesteś niesamowity! thankyou – user15697

+0

Aby być kompatybilnym z python 3 zamień xrange według zakresu –

1

Korzystanie itertools grouper recipe:

>>> from itertools import izip_longest 
>>> def grouper(n, iterable, fillvalue=None): 
     "Collect data into fixed-length chunks or blocks" 
     # grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx 
     args = [iter(iterable)] * n 
     return izip_longest(fillvalue=fillvalue, *args) 

>>> text = 'thisisarandomsentence' 
>>> block = 4 
>>> ' '.join(''.join(g) for g in grouper(block, text, '')) 
'this isar ando msen tenc e' 
+1

thankyou :) również działało !! szukałem tego przez ostatnie 6 godzin !! – user15697

Powiązane problemy