如何在Python 3中定期拆分字符串

时间:2013-05-03 19:30:21

标签: python string intervals

我需要以规则的间隔分割一个字符串并返回一个字符串,该字符串具有相同的字符(一个空格和字母),每个间隔都有换行符,因此它代表某种行/列矩形字符串。我需要返回如下内容(例子):

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

任何?

3 个答案:

答案 0 :(得分:3)

像这样的东西

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

答案 1 :(得分:0)

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

这就是多么容易。谢谢你迅速的回应。 :)

答案 2 :(得分:0)

我建议使用join来获取你的换行符,并使用list list来进行拆分:

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)])

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