我对编程很陌生。我需要创建一个接受任何字符串和填充字符并返回8个字符串列表的函数。 例如:
>>>segmentString("Hello, World!","-")
['Hello, W', 'orld!---']
如您所见,该字符串包含13个字符。该函数分为2个字符串,其中第一个包含8个字符,第二个包含5个字符和3个填充字符。
到目前为止,我已经弄清楚了如何对少于8个字符的字符串执行此操作,但对于不超过8个字符的字符串却不行,因为我将字符串拆分了。
def segmentString(s1,x):
while len(s1)<8:
s1+=x
return s1
如何分割字符串?
答案 0 :(得分:3)
您可以使用this chunking recipe的稍微修改的版本:
def chunks(L, n, char):
for i in range(0, len(L), n):
yield L[i:i + n].ljust(n, char)
res = list(chunks('Hello, World!', 8, '-'))
['Hello, W', 'orld!---']
str.ljust
执行必要的填充。
答案 1 :(得分:1)
@jpp的答案的稍作修改的版本是先用填充字符填充字符串,以使长度可以被8整除:
def segmentString(s, c):
s = s + c * (8 - len(s) % 8)
return [s[i:i+8] for i in range(0, len(s), 8)]
>>> segmentString("Hello, World!","-")
['Hello, W', 'orld!---']
如果您需要将大小更改为变量,则只需添加一个大小参数即可:
def segmentString(s, c, size):
s = s + c * (size - len(s) % size)
return [s[i:i+size] for i in range(0,len(s),size)]
>>> segmentString("Hello, World!","-",4)
['Hell', 'o, W', 'orld', '!---']
答案 2 :(得分:1)
还有另一种可能性:
def segmentString(s1, x):
ret_list = []
while len(s1) > 8:
ret_list.append(s1[:8])
s1 = s1[8:]
if len(s1) > 0:
ret_list.append(s1 + x*(8-len(s1)))
return ret_list
答案 3 :(得分:0)
我也是编程的新手,但我认为您可以使用此...
Word = "Hello, World!---"
print([Word[i:i+x] for i in range(0, len(Word), x)])
只需将x更改为所需的任何值即可。 查看https://www.google.co.in/amp/s/www.geeksforgeeks.org/python-string-split/amp/ 希望对您有所帮助。
答案 4 :(得分:0)
这是您可以理解的简单答案,可以通过几个简单的if来解决您的问题:
a= 'abcdefghijklmdddn'
def segmentString(stuff):
c=[]
i=0
hold=""
for letter in stuff:
i+=1
hold+=letter
if i%8==0:
c.append(hold)
hold=""
c.append(hold)
if hold=="":
print(c)
else:
if hold==c[-1]:
print(c)
else:
c.append(hold)
print(c)