On Tue, 2 Jun 2009 19:10:18 +0800 oyster <lepto.pyt...@gmail.com> wrote:
> I have some strings, and I want to write them into a text files, one > string one line > but there is a requirement: every line has a max length of a certain > number(for example, 10), so I have to replace extra SPACE*3 with > SPACE*2, at the same time, I want to make the string looks good, so, > for "I am123456line123456three"(to show the SPACE clearly, I type it > with a number), the first time, I replace the first SPACE, and get "I > am23456line123456three", then I must replace at the second SPACE > block, so I get "I am23456line23456three", and so on, if no SPACE*3 > is found, I have to aString.replace(SPACE*2, SPACE). > I hope I have stated my case clear. > > Then the question is, is there a nice solution? Not so nice, but it should be faster than whole lot of string manipulations, especially on longer lines: len_line = 55 line = 'Thats a whole line of some utter nonsense ;)' words = line.split() count_space = len_line - len(''.join(words)) count_span = len(words) - 1 span_min = (count_space // count_span) * ' ' count_span_max = count_space - (count_span * len(span_min)) line = buffer(words[0]) for word in words[1:]: if count_span_max: count_span_max -= 1 line += span_min + ' ' else: line += span_min line += word print '%d chars: %r'%(len(line), line) -- Mike Kazantsev // fraggod.net
signature.asc
Description: PGP signature
-- http://mail.python.org/mailman/listinfo/python-list