如何将一个字符串添加到另一个字符串中,如果该字符串是双精度字符串,则如何删除中间的一部分?
我真的不知道该怎么解释,但这就是我想要做的:
让我们说
string1 = "abcde"
string2 = "cdefg"
我如何创建一个字符串为string1 + string2但仅包含“ cde”部分的变量?
我正在寻找类似的东西
string3 = merge(string1, string2)
这会使string3为“ abcdefg”,而不是“ abcdecdefg”
我在Google上找不到它,所以这就是我在这里问的原因。
任何帮助将不胜感激:)
答案 0 :(得分:2)
您可以先检查是否存在重叠,然后仅附加不重叠的部分:
# Find overlap if there is any
for i in range(1, len(string2)):
if string1.endswith(string2[:i]):
k = i
# Concatenate strings:
string3 = string1 + (string2 if k is None else string2[k:])
或更简单的是,先将k
设置为零:
# Find overlap if there is any
k = 0
for i in range(1, len(string2)):
if string1.endswith(string2[:i]):
k = i
# Simply concatenate them
string3 = string1 + string2[k:]
答案 1 :(得分:1)
我们可以查找s2
中s1
的第一个字符的每次出现,并测试此事件s1
的其余部分是否是s2
的开始。我们需要从s1
的开始到结尾都这样做,以确保获得最大可能的重叠。
import re
def fusion(s1, s2):
for m in re.finditer(s2[0], s1):
if s2.startswith(s1[m.start():]):
return s1[:m.start()] + s2
# no overlap found
return s1 + s2
string1 = "abede"
string2 = "edefg" # overlap: 'ede'
print(fusion(string1, string2))
# abedefg
答案 2 :(得分:0)
这可以简单地用python set()来实现。.
>>> string1 = "abcde"
>>> string2 = "cdefg"
>>> string3 = string1 + string2
>>> print (''.join(sorted(set(string3))))
abcdefg
说明::
set()
删除重复的元素,进行sorted()
排序,然后join()
将所有元素合并在一起。