例如,这是字符串列表。
a = 'abcdefg'
b = 'efghij'
c = 'ij234235'
d = 'def'
e = 'efg'
f = 'fg'
str_list = [a, b, c, d, e, f]
我希望结果是['abcdefghij234235', 'defg']
应该按顺序执行串联,并且不修复公共字符串
如何获得结果?
答案 0 :(得分:0)
使用numpy.intersect1d
和itertools.chain.from_iterable()
函数的解决方案:
import numpy as np, itertools
str_list = [list(a), list(b), list(c), list(d), list(e), list(f)]
result = []
for k,a in enumerate(str_list):
if len(result) == 0:
result.append((str_list[k],))
if k+1 == len(str_list): break
common = ''.join(np.intersect1d(str_list[k],str_list[k+1]))
if common and common[-1] == ''.join(str_list[k])[-1] and common[0] in ''.join(str_list[k+1])[0]:
result[-1] += (str_list[k+1][len(common):],)
else:
result.append((str_list[k+1],))
result = [''.join(list(itertools.chain.from_iterable(t))) for t in result]
print(result)
输出:
['abcdefghij234235', 'defg']