如何一次查看一个字符串中的多个字符?

时间:2019-02-26 23:20:22

标签: python python-3.x

我是Python的新手(如您所见)。我正在尝试制作消息编码器和解码器。我的编码器将字符转换为5个符号,我需要我的解码器执行相反的操作,但我不知道如何一次从一个字符串中查看多个字符。我确定我的方法非常基础,但是我希望有人可以向我展示如何使用基础知识。这是解码器的片段:

def decoder(message):
decoded_message = ""
for code in message:
    if code == "___.|":
        decoded_message = decoded_message + "a"
    elif code == "__..|":
        decoded_message = decoded_message + "b"
    elif code == "_...|":
        decoded_message = decoded_message + "c"
    elif code == "....|":

3 个答案:

答案 0 :(得分:0)

您不能“ 一次查看多个字符”,您想要的是创建长度为5的块,具体操作如下:

for code in (message[i:i+5] for i in range(0, len(message), 5)):
    pass  # do something with code

注意:如果您的message的长度不是上一次迭代的5的倍数,则code不会有5个字符。

如果要重复几次,也可以使用

chunks_of = lambda n, xs: xs and [xs[:n],*chunks_of(n,xs[n:])]

然后与chunks_of(5, message)一起使用。

答案 1 :(得分:-1)

code =“ abcdefg”

array([7, 6, 3, 3, 2, 5, 8, 0, 4, 1]) 为您提供从i到j-1的子字符串 例如: code[i:j]给您“ bcd”

code[1:4]

答案 2 :(得分:-2)

您可以访问字符串切片,将字符串像python中的数组一样对待。您可以使用range方法为您提供如下索引:

def decoder(message):
    decoded_message = ""
    for i in range(0,len(message),5):
        code = message[i:i+5]
        if code == "___.|":
            decoded_message = decoded_message + "a"
        elif code == "__..|":
            decoded_message = decoded_message + "b"
        elif code == "_...|":
            decoded_message = decoded_message + "c"
        elif code == "....|":