2012-05-28 34 views
1

基于给定的输入:用Python解释更换字符串值

我可以做的更好waaaaaaaaaaaaay:DDDD !!!!我太sooooooooo了吧:)))好!

期望:输出

我能做到的方式/ LNG更好:d/LNG/LNG我这么/ LNG exicted一下吧!)/ LNG好/ LNG

---挑战:

  1. 更好地与soooooooooo >>我们需要保持第一位的是但缩短第二
  2. 因为我们需要添加一个标签(LNG),因为它可能有主观性和情绪

----问题集约化一些重要的第二个:错误信息“不对称的括号”

任何想法?

我的代码是:

import re 

lengWords = {} # a dictionary of lengthened words 

def removeDuplicates(corpus): 

data = (open(corpus, 'r').read()).split() 
myString = " ".join(data) 

for word in data: 
    for chr in word: 
     countChr = word.count(chr) 
     if countChr >= 3: 
      lengWords[word] = word+"/LNG" 
      lengWords[word] = re.sub(r'([A-Za-z])\1+', r'\1', lengWords[word]) 
      lengWords[word] = re.sub(r'([\'\!\~\.\?\,\.,\),\(])\1+', r'\1', lengWords[word])        

    for k, v in lengWords.items(): 
     if k == word: 
      re.sub(word, v, myString) 
return myString 
+0

为什么第二个字符组中的所有反斜杠和重复字符?也不会让你的代码特别容易。 – NPE

+3

你是否想用一个字母替换任何重复字母的序列?那么这不是用“上帝”取代“好”吗? – interjay

+0

:DDDD比D/LNG短。相同!!!!,)))和!!我认为它应该将翻译限制在结果实际上比原始缩短的情况下,如waaaaaaaaaaaaay和sooooooooo。 – jgomo3

回答

1

这不是完美的解决方案,但我没有时间去完善它NOW-只想让你开始用简单的方法:

s = "I can do waaaaaaaaaaaaay better :DDDD!!!! I am sooooooooo exicted about it :))) Good !!" 
re.sub(r'(.)(\1{2,})',r'\1/LNG',s) 
>> 'I can do wa/LNGy better :D/LNG!/LNG I am so/LNG exicted about it :)/LNG Good !!'