如何切割一个有重复的字符串?

2024-10-04 01:25:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个字符串:

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

我想用这部分代码把它切成22段:

from textwrap import wrap

w_str= (wrap(str,22))

然后我会得到这个:

fhsdkfhskdslshsdkhlghs

bksjvsfgsdnfsfbjfgzfga

avzaeafeaeaddacbytt!tw

下一步应该取第一个字符串的最后四个字母和,然后在下一个字符串的开头经过它,依此类推。 就像这个有身份证的人:

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

Tags: 字符串代码fromimport字母tw身份证wrap
2条回答

一旦你有了这样的字符串:

_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
>>> 

在某些方面,字符串类似于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

相关问题 更多 >