2015-04-26 5 views
0

У меня есть эта строка:вырезать строку с дубликатами

'fhsdkfhskdslshsdkhlghs 
bksjvsfgsdnfsfbjfgzfga 
avzaeafeaeaddacbytt!tw 
fhsdkfhskdslshsdkhlghs 
bksjvsfgsdnfsfbjfgzfga 
avzaeafeaeaddacbytt!tw' 

И я хочу, чтобы использовать эту часть кода для разрезать его на куски длиной 22:

from textwrap import wrap 

w_str= (wrap(str,22)) 

И тогда я получил это:

fhsdkfhskdslshsdkhlghs 

bksjvsfgsdnfsfbjfgzfga 

avzaeafeaeaddacbytt!tw 

следующий шаг должен взять последние четыре буквы и первой строки и мимо него в начале следующего и так далее .. Так же, как это с ID:

e_1 
fhsdkfhskdslshsdkhlghs 
bksjvsfgsdnfsfbjfgzfgaavza 
e_2 
avzaeafeaeaddacbytt!tw 
fhsdkfhskdslshsdkhlghslghs 
e_3 
lghsbksjvsfgsdnfsfbjfgzfga 
zfgaavzaeafeaeaddacbytt!tw 
+1

Какой язык это? –

+0

да. язык - это python – yokie

+0

не _valid_ python, хотя ... – Anentropic

ответ

1

После того, как у вас есть строка, как, например:

_str = """fhsdkfhskdslshsdkhlghs 
bksjvsfgsdnfsfbjfgzfga 
avzaeafeaeaddacbytt!tw""" 

Вы можете сделать следующее:

>>> _str = _str.split() 
>>> new = [_str[i-1][len(_str[i-1])-4:len(_str[i-1])]+_str[i] if i > 0 else _str[i] for i in range(len(_str))] 
>>> print '\n'.join(new) 
fhsdkfhskdslshsdkhlghs 
lghsbksjvsfgsdnfsfbjfgzfga 
zfgaavzaeafeaeaddacbytt!tw 
>>> 

Редактировать

zip два списки вместе в понимании списка, как таковые:

'\n'.join(['\n'.join(item) for item in zip(['e_'+str(num) for num in range(1, len(new)+1)], new)]) 

>>> _str = _str.split() 
>>> new = [_str[i-1][len(_str[i-1])-4:len(_str[i-1])]+_str[i] if i > 0 else _str[i] for i in range(len(_str))] 
>>> print '\n'.join(['\n'.join(item) for item in zip(['e_'+str(num) for num in range(1, len(new)+1)], new)]) 
e_1 
fhsdkfhskdslshsdkhlghs 
e_2 
lghsbksjvsfgsdnfsfbjfgzfga 
e_3 
zfgaavzaeafeaeaddacbytt!tw 
>>> 
+0

здорово! Спасибо – yokie

+0

e_1 fhsdkfhskdslshsdkhlghs e_2 lghsbksjvsfgsdnfsfbjfgzfga e_3 zfgaavzaeafeaeaddacbytt! ТВт – yokie

+0

@yokie простите? –

0

В некотором смысле, строки, как списки в Python в пути you can reference their contents by index, and splice them and so on.

Таким образом, вы могли бы использовать индекс символов в строке, чтобы вытащить последние 4 символа каждой строки обернутой:

input_string = 'fhsdkfhskdslshsdkhlghsbksjvsfgsdnfsfbjfgzfgaavzaeafeaeaddacbytt!tw' 
split_strings = wrap(input_string, 22) 

add_string = '' # nothing there at first, but will be updated as we process each wrapped string 
for output_string in split_strings: 
    print add_string + output_string 
    add_string = output_string[-4:] # "[-4:]" means: "from the fourth last char of the string, to the end" 

выходы:

fhsdkfhskdslshsdkhlghs 
lghsbksjvsfgsdnfsfbjfgzfga 
zfgaavzaeafeaeaddacbytt!tw 
Смежные вопросы