我需要以固定的间隔拆分一个字符串,并返回一个具有相同字符(一个空格和一个字母)的字符串,每个间隔带有换行符,这样它就可以表示某种行/列的矩形字符串。我需要返回如下内容(示例):
>>> s = 'sliding puzzles'
>>> puzzle(s, 3, 5)
'slidi
ng pu
zzles'
任何人?
像这样的东西
def puzzle(s,a,b):
if a*b != len(s):
print "Not possible"
return
start =0
end = b+1
output =""
for i in range(0,a):
output= output+s[start: end]+"\n"
start = end+1
end = end+b
print output
知道了!感谢 Bhavish Agarwal。
def puzzle(s, r, c):
assert r*c == len(s), 'not possible'
start = 0
end = c
output =""
for _ in range(0, r - 1):
output= output+s[start: end]+"\n"
start = end
end = end + c
output= output+s[start: end]
return output
这就是多么容易。感谢您的迅速回复。:)
我建议使用 join 来获取换行符,并使用列表理解来进行拆分:
def make_slice(my_str, slice_length, slice_start):
return mystr[slice_length * slice_start:slice_length * (slice_start + 1)]
def puzzle(my_string, substring_length):
return '\n'.join([make_slice(my_string, substring_length, substring_index)
for substring_index
in range((len(my_string) // substring_length) + 1)])
此变体不需要指定拼图的高度,只需指定子字符串的长度。拼图的最后一行可能需要填充空格以达到与其他行相同的长度。