初学者在这里,并没有找到这个问题的答案,虽然有些相似。
如果我有两个字符串:
s1 = 'abcdefghijk'
s2 = 'abcdefghi'
如何将'jk'
作为输出? 'abcdefghi'
必须首先匹配,然后我会在最后获得差异。
在此之后的下一个(我可能能够弄清楚,如果我得到第一个问题的答案)是s2 = 'cdefghi'
并且我仍然希望输出仅'jk'
而不是{{1} }和'ab'
。
答案 0 :(得分:2)
您可以在s1
find()
中找到def after(s1, s2):
index = s1.find(s2)
# return None if s2 is not part of s1
# or if there are no characters behind s2 in s1
if index != -1 and index + len(s2) < len(s1):
return s1[index + len(s2):]
else:
return None
s1 = "abcdefghijk"
s2 = "cdefghij"
print(after(s1, s2))
的第一个索引,即:{/ p>
osascript
答案 1 :(得分:0)
您可以使用字符串方法index
来查找子字符串的开头,然后添加子字符串的长度以获得您希望从中获取额外差异的位置。
base = 'abcdefghijk'
sub = 'abcdefghi'
def extra(base, sub):
start = base.index(sub)
end = start + len(sub)
return base[end:]
extra(base, sub)
如果ValueError
不是子字符串,则会在此处抛出sub
,您可以选择在这种情况下执行您想要的操作。
编辑:根据你对你的问题的评论,什么也不返回 - 我猜你的意思是可能是一个空字符串 - 做:
def diff(base, sub):
try:
start = base.index(sub)
end = start + len(sub)
return base[end:]
except ValueError:
return ''
此处是否使用find
或index
可能取决于您实际想要使用此内容。
答案 2 :(得分:0)
对于第一种情况,案例s1 ='abcdefghijk's2 ='abcdefghi',以下内容也适用。
>>> set(s1) - set(s2)
{'j', 'k'}
>>> ''.join( set(s1) - set(s2))
'jk'
所以基本上可以在字符串上应用set逻辑来提取上述字符串的重叠和非重叠部分。
了解更多信息...... https://docs.python.org/2/library/sets.html
但是对于第二种情况,@ user3760780建议似乎是最合适的。