每隔5个数字后分割一串数字

时间:2017-12-11 19:54:44

标签: python python-3.x

我为Baudot翻译器格式化了一些代码,例如,程序需要采用与1000111001相同的10001 11001。

我将如何做到这一点?

sentence=[]
if " " in Baudot=True:
    null
else:

codingSeq=Baudot.split(" ")
for letter in codingSeq:

2 个答案:

答案 0 :(得分:2)

如果我正确理解您的问题,您希望将二进制序列转换为Baudot格式。如果是这种情况,那么这应该对你有用:

  bstr = "100011001101101"
  baudot = " ".join([bstr[i:i+5] for i in range(0,len(bstr),5)])

修改您的代码:

def bsplit(seq):
    flag = True
    for i in seq.split(" "):
        if len(i)!=5:
            flag = False
    if flag:
        return seq
    else:
        seq = "".join(seq.split(" ")) #To remove all existing spaces
        return " ".join([seq[i:i+5] for i in range(0,len(seq),5)]) #To reformat the sequence

您现在可以致电

 bsplit("10001100111010101")

答案 1 :(得分:0)

是的,只需使用len(seq) % 5 == 0作为唯一需要的测试,Saravana Kumar的回答可以更简单

def bsplit(seq):
    if len(seq) % 5 == 0:
        return ' '.join(seq[i:i+5] for i in range(0, len(seq), 5))
    return seq

使用内联if-else我们可以有一个return,我添加了paren以允许换行符在使其成为“单行”之后有所恢复可读性

def bsplit(seq):
    return (seq if len(seq) % 5
                else ' '.join(seq[i:i+5]
                              for i in range(0, len(seq), 5)))