David W. Lambert <lamber...@corning.com> added the comment:

I'd like textwrap option to preserve new lines.  Actual case:

I have a code that produces cryptograms meant to be printed and solved 
with paper and pencil.  Standard format for cryptogram inserts space 
character between each character of the original text, doubling the line 
length.  textwrap is handy to fit the cryptogram back to paper width.

Problem: When text to "cryptogramize" is a limerick original line breaks 
should be preserved.


P A Y C Y   H J K   J   K Q L Z   B J U R   G C V F   P C Y I P ,   H A 
V 

 K V O N A P   I Y H   H J R K   P V   U Y U Y I P .   A Y C   P R E ' Y 
C 

 L A V L Z   G O B B   V G   E V V   G C V F   J   N O B B .   K A Y 

 U Q Y U   B J K P   I Q N A P ;   K A Y   H J K   K E Y I P . 

 J I V I R F V O K



import string
import random
import textwrap

def Shuffle(L):
    random.shuffle(L)
    return L

def create_cryptogram(quote):
    """
        (disregards cryptogram rule that a letter can't stand for 
itself)
        doctest omitted
    """
    # wish: wrap line-by-line to preserve original line breaks
    wrapped_quote = textwrap.fill(text=quote,width=38).upper()
    d = {c:c for c in string.printable}
    d['\n'] = '\n'*2
    UC = string.ascii_uppercase
    d.update(zip(UC,Shuffle(list(UC))))
    return ' '.join(d[c] for c in wrapped_quote)

----------
nosy: +LambertDW

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue4318>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to