如何连接顺序字符串列表,包括部分相同的字符串

时间:2016-12-22 07:35:53

标签: python-2.7

例如,这是字符串列表。

a = 'abcdefg'
b = 'efghij'
c = 'ij234235'
d = 'def'
e = 'efg'
f = 'fg'

str_list = [a, b, c, d, e, f]

我希望结果是['abcdefghij234235', 'defg']

应该按顺序执行串联,并且不修复公共字符串

如何获得结果?

1 个答案:

答案 0 :(得分:0)

使用numpy.intersect1ditertools.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']