How to split string
Chris
cwitts at gmail.com
Wed Dec 5 08:09:10 EST 2007
On Dec 5, 1:46 pm, Johny <pyt... at hope.cz> wrote:
> On Dec 5, 11:55 am, Chris <cwi... at gmail.com> wrote:
>
>
>
> > On Dec 5, 10:55 am, Johny <pyt... at hope.cz> wrote:
>
> > > I have a string of a variable length and I need to split the string
> > > in strings of 6 characters .
> > > But if the 6th character is not space then I must split the string
> > > at possition before the 6th character.
>
> > > For example:
> > > if the main string S is
>
> > > S='abcde fghc ijkl mnop'
>
> > > the result should be
> > > abcde
> > > fghc
> > > ijkl
> > > mnop
>
> > > Do you have any idea how it can be done?
> > > Thank you
> > > L.
>
> > That's not a great example of what you are looking for, because that
> > result just looks like:
> > '\n'.join(S.split())
>
> > What result would you be looking for with say:
> > S='this is just a random sequence of letters courtesy of monkeys on
> > typewriter.'
>
> Chris,
> Thank you for your reply.
> So, let's suppose the example:
> S='this is just a random sequence of letters courtesy of monkeys on
> typewriter.'
> and the length of split strings is now 10( instead of 6)
> The example should be like this
> this is
> just a
> random
> sequence
> of letters
> courtesy
> of monkeys
> on
> typewriter
>
> In other words, the string should be split at every 10th possition but
> if the 10th character is space, then the string must be split at the
> nearest space before the 10th possition.
>
> It could be better explained if the length of split strings will be
> 20.
>
> S='this is just a random sequence of letters courtesy of monkeys on
>
> > typewriter.'
>
> Results:
>
> this is just a
> random sequence of
> letters courtesy of
> monkeys on
> typewriter.'
>
> Any idea how to do that?
> Thank you
> L.
To be honest I couldn't think of a neat way of doing it.
What seems to look right, albeit fairly ugleh was this.
import string
def digest_chunks(input_string, max_length):
tmp = []
while input_string:
if len(input_string) >= max_length:
if input_string[max_length] not in string.whitespace:
y = max_length - input_string[max_length::-1].find('
')
if not y:
if len(input_string) < max_length:
tmp.append(input_string)
input_string = ''
else:
y = input_string[::-1].find(' ', 1)
tmp.append(input_string[:y])
input_string = input_string[y:]
else:
tmp.append(input_string[:y])
input_string = input_string[y:]
else:
tmp.append(input_string[:max_length])
input_string = input_string[max_length:]
else:
tmp.append(input_string)
input_string = ''
return '\n'.join(tmp)
s = 'this is just a random sequence of letters courtesy of monkeys on
typewriters.'
print digest_chunks(s, 20)
>python -u "test.py"
this is just a
random sequence of
letters courtesy of
monkeys on
typewriters.
>Exit code: 0
More information about the Python-list
mailing list