Python用字典值替换字符串

时间:2012-05-28 16:05:58

标签: python regex dictionary

根据给定的输入:

  

我可以更好地做waaaaaaaaaaaaaay:DDDD !!!!我太兴奋了:) :))好!!

期望:输出

  

我可以做得更好/液化天然气更好:D / LNG!/ LNG我是这样/液化天然气是关于它的:)/液化天然气好!/液化天然气

---挑战:

  1. 更好对比soooooooooo>>我们需要保留第一个,但要缩短第二个
  2. 第二个我们需要添加一个标签(LNG),因为它可能对主观性和情感的强化具有一定的重要性
  3. ----问题:错误消息“不平衡的括号”

    有什么想法吗?

    我的代码是:

    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
    

1 个答案:

答案 0 :(得分:1)

这不是完美的解决方案,但我现在没有时间对其进行改进 - 只是想让您从简单的方法入手:

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 !!'