保存字符与字符串中其他每个字符之间的距离

2024-09-27 00:13:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个字符串x,我想保存一个随机字符(我将称之为z)在x中的中间字符和其他字符之间的距离/方向,以及在另一个字符串中的距离/方向指向的字符的类型。如何循环使用其他字符(从左到右,不使用z)以将数据保存在不同的字符串中,而不会出现错误?下面是一个例子:

x = "vnu4)rhg&3j"

#if the process would be done with the 'h' in x, this other string-variable 'q'
#should be the result:

q = "-6='v',-5='n',-4='u',-3='4',-2=')',-1='r',+1='g',+2='&',+3='3',+4='j'"

我使用Python 3.7.4


Tags: the数据字符串距离类型if错误be
3条回答
def save_distance(target_string, target_char):
    index_of_target_char = target_string.find(target_char)
    output_string = ""
    for i, char in enumerate(target_string):
        if i == index_of_target_char:
            continue
        else:
            distance = i - index_of_target_char
            if distance > 0:
                output_string = output_string + "+" + str(distance) + "=" + f"'{char}'" + ("," if i < len(target_string) - 1 else "")
            else:
                output_string = output_string + str(distance) + "=" + f"'{char}'" + ("," if i < len(target_string) - 1 else "")
    return output_string

输出:

"-6='v',-5='n',-4='u',-3='4',-2=')',-1='r',+1='g',+2='&',+3='3',+4='j'"

请注意,如果目标字符串中多次出现目标字符,此解决方案将无法正常工作。我不确定这对你所面临的问题是否重要

这应该足以让您开始:

x = "vnu4)rhg&3j"

h_ind = x.find('h')
for i in range(len(x)):
    print(f"{x[i]} = {i - h_ind}")

x.find(h)正在获取字符串中“h”的索引,然后从其他字符的索引中删除

输出:

v = -6
n = -5
u = -4
4 = -3
) = -2
r = -1
h = 0
g = 1
& = 2
3 = 3
j = 4

这现在适用于:

x = "vvnu4)rhg&3j"

输出:

v = -7
v = -6
n = -5
u = -4
4 = -3
) = -2
r = -1
h = 0
g = 1
& = 2
3 = 3
j = 4

这只是数学,从实际位置减去x中的“h”位置,该位置可由enumerate在列表上迭代时确定:

x = "vnu4)rhg&3j"
qList = ["%s='%s'" % (i-x.find('h'), x[i]) for (i, j) in enumerate(x)]
print(qList)  # as list
print(','.join(qList))  # as string

输出:

["-6='v'", "-5='n'", "-4='u'", "-3='4'", "-2=')'", "-1='r'", "0='h'", "1='g'", "2='&'", "3='3'", "4='j'"]
-6='v',-5='n',-4='u',-3='4',-2=')',-1='r',0='h',1='g',2='&',3='3',4='j'

相关问题 更多 >

    热门问题