« Ajude a sustentar a Wikipédia e outros projetos, sem colocar a mão no bolso, e concorra a um Eee PC!Mysql usando bazaar, no launchpad! »

Mais Text Munger

03/07/2008

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 sys
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")
 

Email por Walter Cruz em Python, Geek life
Tags: ,

Endereço de trackback para este post

Trackback URL (clique direito e copie atalho/localização do link)

Sem feedback para esse post ainda

Deixe seu comentário


Seu endereço de e-mail não será revelado nesse site.

Sua URL será exibida.
PobreExcelente
(Quebras de linha se tornam <br />)
(Nome, e-mail & website)
(Permitir que usuários o contatem através de um formulário eletrônico (seu e-mail não será exibido.))
Subscribe to comments by email

You can just use your OpenID to provide your name, e-mail and url.