#python如何实现平分字符串为n份,不能整除的从开头补齐
想要将一条序列平均分为n份 如果不能整除则从开头补齐
例如 str = ABCDEFGH 平分为3段
则str1 =ABC str2= DEF str3 = GHA
请教一下该如何实现,我想到的是通过判断整除来补齐,但是不知如何均分,求指点
下面是一个实现,供参考:
参考链接:
python取整的几种常见方式-向上取整、向下取整、四舍五入取整、int()取整、“//”整除取整_旋转小马的博客-CSDN博客_python 向上取整
Python字符串截取方式_luckjump的博客-CSDN博客_python 字符串截取
import math
str = "ABCDEFGH"
oristr = "ABCDEFGH" #用于当均分时,作为str的备份进行复制拼接操作
result=[]
n = int(input("请输入要平分字符串为多少份:"))
#https://blog.csdn.net/u014543416/article/details/120773898
length = int(math.ceil(len(str)/n)) #每份均分字符串的长度
i = 0
start = 0
end = length
while i< n: #均分n次字符串,如果没有超过次数则一直进行均分字符串操作,直到完成n次菊粉
#https://blog.csdn.net/luckjump/article/details/119251647
if end > len(str): #如果均分字符串超过了str字符串的尾部,则再拼接一个str字符串备份,以从开开始均分
str+=oristr
tstr =str[start:end] #均分字符串str一份
#print("start=",start,",end=",end,"tsrt=",tstr)
result.append(tstr) #把这一份字符串存入result列表中
#重置均分字符串的起始位置和结束位置,开始下一轮均分字符串操作
start = end
end = start+length
# print("result=",result)
i+=1 #均分次数+1
print("result=",result)
fill_str = '0' # 填充字符
str_ = 'abcdefg' # 字符串
n = 3 # 平均几份
str_ = fill_str * (n - len(str_) % n) + str_
for i in range(0, len(str_), n):
print(str_[i:i+n])
import re
from math import ceil
def cut_text(text, length):
"""将字符串切割成指定长度"""
len_text = len(text)
if len_text < length:
return
textArr = re.findall('.{' + str(length) + '}', text)
# print(textArr)
if len_text - len(textArr) * length > 0:
textArr.append(text[(len(textArr) * length):])
# 判断最后一段的长度是否小于指定长度
len_last = len(textArr[-1])
if 0 < len_last < length:
textArr[-1] += text[:length-len(textArr[-1])]
return textArr
str1 = 'ABCDEFGH'
n = 4
len_str1 = len(str1)
length = int(len_str1 / n) if len_str1 % n == 0 else ceil(len(str1) / n)
print(length)
print(cut_text(str1, length))