Hello all,

Further to my previous puzzling, I've been working out the best way to
chop a string up into n-sized words:

I'm aware that I can use a slice of the string, with, eg, myWord[0:4].

I am also aware that I can do blob = myWord.pop(0) to take (and
remove) the first character.  I can botch these together, eg
myFourLetterWord =
myWord.pop(0)+myWord.pop(0)+myWord.pop(0)+myWord.pop(0) but that is
really horrid.

I then tried doing something suitably silly, as follows:

1) Find the length of string.
2) Create a list using range(0, length, 4)
3) We now have the end points for each 'word', eg 4, 8, 12.
4) Now create a list of tuples that represent the slices we need, ie
(0,4), (5,8) etc
5) Iterate over this list, grabbing the slices as depicted in the tuples.
6) Use these tuples to grab slices.

The code looked like this:
#!/usr/bin/env python
myString = "Sir, you are an egotistical rhetorician!!!"
length=len(myString)
extra=length%4
if extra > 0:
  myString = myString+("#"*extra)+"#"
r = range(0, len(myString), 4)
wordRange=[]
for i in r:
  if i>1:
    wordRange.append((int(i-4),i))
for t in wordRange:
  print myString[t[0]:t[1]]

Surely there's an easier way?

S.
_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to