【发布时间】:2012-05-28 16:05:58
【问题描述】:
基于给定的输入:
我可以做得更好 waaaaaaaaaaaaaay :DDDD!!!!我对此感到非常兴奋:))) 好!!
期望:输出
我可以做得更好/LNG :D/LNG !/LNG 我很兴奋/LNG 对此感到非常兴奋 :)/LNG Good !/LNG
--- 挑战:
- 比 soooooooooo 更好 >> 我们需要保持第一个不变,但缩短第二个
- 第二个我们需要添加一个标签 (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
【问题讨论】:
-
为什么第二个字符组中的所有反斜杠和重复字符?两者都不会让你的代码看起来特别容易。
-
您是否希望用一个字母替换任何重复字母序列?这不是用“上帝”代替“好”吗?
-
:DDDD 比 :D/LNG 短。与 !!!!, ))) 和 !! 相同。我认为它应该将翻译限制在结果实际上比原始结果短的情况下,例如 waaaaaaaaaaaaaay 和 sooooooooo。
-
@interjay 在这种情况下,我认为他应该首先丢弃英语(或语言)词典中的任何单词。
标签: python regex dictionary