Whitespace, punctuation, numbers — anything that isn’t a word — should also remain unchanged.
Ou seja, minha implementação anterior está fundamentalmente errada ![]()
E eu só li essa parte do enunciado depois do comentário do Rodolpho.
Mas é fácil de resolver, usando o shlex mesmo:
import shlex
from random import shuffle
def munge(text):
t = shlex.shlex(text, posix=False)
t.quotes = "’"
t.whitespace = ""
#print(list(t))
s = (munge_word(word) for word in t)
print("".join(s))
def munge_word(aword):
s = list(aword)
first = s.pop(0)
try:
last = s.pop()
except IndexError:
return aword
shuffle(s)
return first + ”.join(s) + last
try:
s = open(sys.argv[1]).read()
munge(s)
except IndexError:
print("Usage: munge.py file")
