在两个定义的边界序列之间拼接

时间:2017-11-11 22:03:06

标签: python string loops

我创建了一个包含四个字符串的函数。前两个字符串将是长字符串,可以是任何东西。最后两个字符串将被称为边界。我想在定义的边界之间取得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')。另一件事是如果字符串可以两种方式拼接,它只需要在最低索引处拼接的序列。

1 个答案:

答案 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']]