easy string formating question

Tim Chase python.list at tim.thechases.com
Thu Aug 10 15:05:14 EDT 2006


> I have kind of an interesting string, it looks like a couple hundred
> letters bunched together with no spaces. Anyway,  i'm trying to put a
> "?" and a  (\n) newline after every 100th character of the string and
> then write that string to a file. How would I go about doing that? Any
> help would be much appreciated.


 >>> s = 
'1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
 >>> size = 10
 >>> print '?\n'.join([s[i:i+size] for i in xrange(0, len(s)+1, 
size)])
1234567890?
abcdefghij?
klmnopqrst?
uvwxyzABCD?
EFGHIJKLMN?
OPQRSTUVWX?
YZ

Just adjust "size" to 100 rather than 10.

It may be a bit brute-force-ish, and there may be other more 
elegant ways that I don't know, but that list comprehension 
extracts pieces of "s" of size "size" and creates a list where 
each piece doesn't excede "size" characters.  The join() then 
just smashes them all together, joined with your requested 
"quotation-mark followed by newline"

And for the regexp-junkies in the crowd, you can use

 >>> import re
 >>> r = re.compile("(.{%i})" % size)
 >>> print r.sub(r"\1?\n", s)
1234567890?
abcdefghij?
klmnopqrst?
uvwxyzABCD?
EFGHIJKLMN?
OPQRSTUVWX?
YZ

I'm sure there are plenty of other ways to do it. :)

-tkc











More information about the Python-list mailing list