-1

我需要以固定的间隔拆分一个字符串,并返回一个具有相同字符(一个空格和一个字母)的字符串,每个间隔带有换行符,这样它就可以表示某种行/列的矩形字符串。我需要返回如下内容(示例):

>>> s = 'sliding puzzles'
>>> puzzle(s, 3, 5)
'slidi
ng pu
zzles'

任何人?

4

3 回答 3

4

像这样的东西

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
于 2013-05-03T19:42:22.950 回答
1

知道了!感谢 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

这就是多么容易。感谢您的迅速回复。:)

于 2013-05-03T19:59:12.093 回答
1

我建议使用 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)])

此变体不需要指定拼图的高度,只需指定子字符串的长度。拼图的最后一行可能需要填充空格以达到与其他行相同的长度。

于 2013-05-03T20:07:51.250 回答