说我有这个:
x = ["hello-543hello-454hello-765", "hello-745hello-635hello-321"]
我如何将输出发送到:
["hello-543: hello-454: hello-765", "hello-745: hello-635: hello-321"]
答案 0 :(得分:1)
您可以使用range
通过列表理解根据子字符串的长度来分割每个字符串,其中步长是每个子字符串应包含的字符数。然后使用join
将每个列表转换回带有所需分隔符的字符串。
x = ["hello-543hello-454hello-765", "hello-745hello-635hello-321"]
n = 9
result = [': '.join([s[i:i+n] for i in range(0, len(s), n)]) for s in x]
print(result)
# ['hello-543: hello-454: hello-765', 'hello-745: hello-635: hello-321']
或使用textwrap.wrap
:
from textwrap import wrap
x = ["hello-543hello-454hello-765", "hello-745hello-635hello-321"]
n = 9
result = [': '.join(wrap(s, n)) for s in x]
print(result)
# ['hello-543: hello-454: hello-765', 'hello-745: hello-635: hello-321']
答案 1 :(得分:0)
如果您确定每个str
的长度都是n
的倍数,那么我将使用re.findall
来完成该任务。
import re
txt1 = "hello-543hello-454hello-765"
txt2 = "hello-745hello-635hello-321"
out1 = ": ".join(re.findall(r'.{9}',txt1))
out2 = ": ".join(re.findall(r'.{9}',txt2))
print(out1) #hello-543: hello-454: hello-765
print(out2) #hello-745: hello-635: hello-321
.{9}
中的 re.findall
表示除换行符(9
之外的所有字符中的\n
,因此只要您的str
都可以正常工作不包含\n
。如果不成立,则需要添加re.DOTALL
作为re.findall