我创建了一个包含四个字符串的函数。前两个字符串将是长字符串,可以是任何东西。最后两个字符串将被称为边界。我想在定义的边界之间取得string1中的所有内容,并在定义的边界之间替换string2中的所有内容。从字符串1中取出的字符串部分将被删除,字符串2中替换的部分将被删除。这个功能的一个例子如下:
x3 <- reduce(list(x, y, z), left_join, by = "num")
x5 <- x3 %>%
gather(Type, alph, -num, na.rm = TRUE) %>%
select(-Type)
x5
# # A tibble: 7 x 2
# num alph
# <dbl> <chr>
# 1 1 A
# 2 2 B
# 3 3 C
# 4 2 B
# 5 5 E
# 6 5 E
# 7 8 H
这是我创建的功能,用于完成上面所写的内容
def bound('DOGYOMAMA','ROOGMEMAD', 'OG' 'MA') --> RETURNS('DMA','ROOGYOMAD',
'OG', 'MA')
我的问题是我还需要这样做才能反向运行,所以如果我def bound(st,sz,a,b):
s1=''.join(st)
s2=''.join(sz)
if a in s1 and b in s1 and a in s2 and b in s2:
f1=s1.find(a)
l1=s1.find(b)
f2=s2.find(a)
l2=s2.find(b)
blen1 = len(b)
blen2 = len(b)
s1_n = s1[:f1] +s1[l1+blen1:]
s2_n = s2[:f2] + s1[f1:l1 + blen1] +s2[l2+blen2]
return s1_n, s2_n, a, b
print(bound('DOGYOMAMA','ROOGMEMAD', 'OG','MA'))
,它也应该寻找('DOGYOMAMA','ROOGMEMAD', 'OG' 'MA')
。另一件事是如果字符串可以两种方式拼接,它只需要在最低索引处拼接的序列。
答案 0 :(得分:0)
试试这个:
如果你必须返回许多项目,那么不要返回输出而不是将输出存储在列表中并最后返回该列表,我在那里做了:
def bound(st,sz,a,b):
result=[]
string_s = [''.join(st), ''.join(sz), ''.join(st)[::-1], ''.join(sz)[::-1]]
boundaries = [a, b, a[::-1], b[::-1]]
for chunk in range(0, len(string_s), 2):
word = string_s[chunk:chunk + 2]
bound = boundaries[chunk:chunk + 2]
if bound[0] in word[0] and bound[1] in word[0] and bound[0] in word[1] and bound[1] in word[1]:
f1 = word[0].find(bound[0])
l1 = word[0].find(bound[1])
f2 = word[1].find(bound[0])
l2 = word[1].find(bound[1])
blen1 = len(bound[1])
blen2 = len(bound[1])
s1_n = word[0][:f1] + word[0][l1 + blen1:]
s2_n = word[1][:f2] + word[0][f1:l1 + blen1] + word[1][l2 + blen2]
result.append([s1_n, s2_n, bound[0], bound[1]])
return result
print(bound('DOGYOMAMA','ROOGMEMAD', 'OG','MA'))
输出:
[['DMA', 'ROOGYOMAD', 'OG', 'MA'], ['AMAMOYAMOYGOD', 'DAMEME', 'GO', 'AM']]