我建议您使用difflib.SequenceMatcher,然后再使用get_matching_blocks函数。
>>> p1, p2 = "/root/d1/d2/d1/d2","d2/d1/d2/file.txt"
>>> sm = difflib.SequenceMatcher(None,p1, p2)
>>> size = sm.get_matching_blocks()[0].size
>>> path = p1 + p2[size:]
>>> path
'/root/d1/d2/d1/d2/file.txt'
Ans一个通用解决方案
def join_overlapping_path(p1, p2):
sm = difflib.SequenceMatcher(None,p1, p2)
p1i, p2i, size = sm.get_matching_blocks()[0]
if not p1i or not p2i: None
p1, p2 = (p1, p2) if p2i == 0 else (p2, p1)
size = sm.get_matching_blocks()[0].size
return p1 + p2[size:]
执行
>>> join_overlapping_path(p1, p2)
'/root/d1/d2/d1/d2/file.txt'
>>> join_overlapping_path(p2, p1)
'/root/d1/d2/d1/d2/file.txt'
d1/d2
,结果应该是什么? - miraculixx