首页 > 解决方案 > 如何在每8个字符的字符串中插入一个子字符串并在Python中继续?

问题描述

编辑:我现在看到它每 3-4 个字母就中断一次,因为它正在计算逗号。我如何也让它忽略逗号?

我有一串字母,每 8 个字母我想插入一个 8 个零的子串。所以如果我的字符串输入是'H,e,l,l,o,W,o,r,l,d',我希望我的输出看起来像'H,e,l,l,o,W,o, r,0,0,0,0,0,0,0,0,l,d'。这是我到目前为止所拥有的,但在我迭代 3-4 个字母后,我发现它会崩溃。

x = 'H,e,l,l,o,W,o,r,l,d,I,t,I,s,A,G,o,o,d,D,a,y' 
count = 0
for ele in x:
    if count == 8:
        x = x[:count] + ',0,0,0,0,0,0,0,0,' + x[count:]
        count = 0
    else:
        count += 1

标签: pythonstringsubstring

解决方案


由于每个字符后面都有一个逗号,因此在您的示例中,您实际上在 16 个字符后插入了零。一个简单的方法是:

distance = 16
insertion = '0,' * 8
x = 'H,e,l,l,o,W,o,r,l,d,I,t,I,s,A,G,o,o,d,D,a,y' 

parts = [x[i:i+distance] for i in range(0, len(x), distance)]
result = insertion.join(parts)

结果将是: 'H,e,l,l,o,W,o,r,0,0,0,0,0,0,0,0,l,d,I,t,I,s,A,G,0,0,0,0,0,0,0,0,o,o,d,D,a,y'

还有一个简短的警告:在您的示例代码中,您循环遍历 x 的元素,但在循环中,您修改了 x。您永远不应该修改您正在循环的变量(可迭代)。相反,如果您想遵循您的方法,您应该创建一个新变量作为空字符串y = '',然后将 for 循环中的新字符串连接到 y。最后,您可以用 y 覆盖 x。


推荐阅读