python - 如何在每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
解决方案
由于每个字符后面都有一个逗号,因此在您的示例中,您实际上在 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。
推荐阅读
- r - 将先验信息纳入 R 中的岭回归 (RAPM)
- python - 使用 Visual Studio Code 从 Jupyter 笔记本保存文件时出现 Errno 30
- sql - 从 yyyy-mm-dd 到 mm-yy?
- flutter - Flutter:我们是否被迫在 master 分支上使用 null 安全性?
- notifications - 雪花监控和通知
- forms - Swift UI 表单 - 为什么有这么多空间?
- npgsql - Npgsql 5.0.0.0 事务已完成,不再可用
- c - const 指向传递给函数的 const 字符串的指针
- doctrine-orm - 如何设置依赖于两列及其值的 Doctrine 唯一行?
- python - 循环遍历 Jupyter 目录并将文件名添加到列表中