【发布时间】:2020-02-04 00:17:28
【问题描述】:
如果公共字符位于同一位置,我需要想办法从两个字符串中删除公共字符,但它不起作用,我正在尝试解决这个问题。这是我到目前为止所尝试的,它适用于某些字符串,但是一旦第二个字符串大于第一个字符串,它就会停止工作。编辑:我还需要一种在打印之前将结果存储在变量中的方法,因为我需要在另一个函数中使用它。
例子:
ABCDEF 和 ABLDKG 将导致两个字符串的“ABD”部分被删除,但字符串的其余部分将保持不变 CEF 和 LKG 将是输出
def compare(input1,input2):
if len(input1) < len(input2):
for i in input1:
posi = int(input1.find(i))
if input1[num] == input2[num]:
x = input1.replace(i,"" )
y = input2.replace(i,"" )
num = num+1
print(x)
print(y)
else:
for i in input2:
num = 0
posi = int(input2.find(i))
if input2[num] == input1[num]:
input1 = input1[0:num] + input1[num+1:(len(input1)+ 1 )] # input1.replace(i,"" )
input2 = input2[0:num] + input2[num+1:(len(input1) + 1)]
x = input1
y = input2
num = num + 1
print(str(x))
print(str(y))
【问题讨论】:
-
“......它停止工作”。问题是什么?它有什么作用?您是否收到错误堆栈跟踪,它只是停止,...?如果它停在较大的字符串上,您可以反转参数,使用较长的作为第一个字符串。
-
你可以使用
zip_longestfromitertoolsie[''.join(k) for k in zip(*[i for i in zip_longest("ABCDEF","ABLDKG",fillvalue = "") if i[0]!=i[1]])] -
它停止工作究竟是什么意思?请分享minimal reproducible example。顺便说一句,您的代码缩进看起来很糟糕。
-
如果我用
compare('asdfq', 'aqdez')对其进行测试,它似乎甚至不适用于等长字符串,是吗...? (结果:sdfq和qdez)
标签: python python-3.x string substring