Python 如何将一个字符串添加到另一个字符串并删除重叠部分? 如何将一个字符串添加到另一个字符串中,如果它是双的,则删除中间的一个部分?
我真的不知道如何解释这一点,但这就是我想做的: 比方说Python 如何将一个字符串添加到另一个字符串并删除重叠部分? 如何将一个字符串添加到另一个字符串中,如果它是双的,则删除中间的一个部分?,python,string,merge,overlapping,Python,String,Merge,Overlapping,我真的不知道如何解释这一点,但这就是我想做的: 比方说 string1 = "abcde" string2 = "cdefg" 如何创建一个string1+string2的变量,但只使用“cde”部分一次 我要找的东西是: string3 = merge(string1, string2) 这将使string3成为“abcdefg”,而不是“abcdecdefg” 我在谷歌上找不到它,所以我在这里问 非常感谢您的帮助:)您可以先检查是否存在重叠,然后仅附加非重叠部分: # Find ove
string1 = "abcde"
string2 = "cdefg"
如何创建一个string1+string2的变量,但只使用“cde”部分一次
我要找的东西是:
string3 = merge(string1, string2)
这将使string3成为“abcdefg”,而不是“abcdecdefg”
我在谷歌上找不到它,所以我在这里问
非常感谢您的帮助:)您可以先检查是否存在重叠,然后仅附加非重叠部分:
# 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:]
您可以先检查是否存在重叠,然后仅附加非重叠部分:
# 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:]
我们可以在
s1
中查找s2
的第一个字符的每次出现,并测试该出现的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
我们可以在s1
中查找s2
的第一个字符的每次出现,并测试该出现的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
这可以简单地用python set()实现,如下所示
>>> string1 = "abcde"
>>> string2 = "cdefg"
>>> string3 = string1 + string2
>>> print (''.join(sorted(set(string3))))
abcdefg
说明:set()
删除重复的元素,sorted()
排序,join()
将所有元素合并回来
这可以简单地用python set()实现,如下所示
>>> string1 = "abcde"
>>> string2 = "cdefg"
>>> string3 = string1 + string2
>>> print (''.join(sorted(set(string3))))
abcdefg
说明:set()
删除重复的元素,sorted()
排序,join()
将所有元素合并回来
先把它写在纸上。看看步骤是什么。然后写代码,先在纸上写出来。看看步骤是什么。然后编写代码。使用string1=“abede”
和string2=“edefg”
,您将得到'abedededefg'
而不是'abedefg'。使用string1=“abede”
和string2=“edefg”
,您将得到而不是'abedefg'。使用string1=“abedde”,string2=“edefghi”使用string1=“abedde”可以得到“abdefghi”而不是“abeddefghi”,使用string2=“eddefghi”可以得到“abdefghi”而不是“abeddefghi”