问题在于:
这是我到目前为止的代码:
http://subclipse.tigris.org/update_1.10.x
对于第二部分,我已经考虑过使用正则表达式,但是我无法用正则表达式来解决它,因为它不是我用过的东西。
答案 0 :(得分:1)
您可以使用
import re
pat = r"\b([^\W\d_])([^\W\d_]*)([^\W\d_])\b"
s = "Testers"
print(re.sub(pat, (lambda m: "{0}{1}{2}".format(m.group(1), len(''.join(set(m.group(2)))), m.group(3))), s))
请参阅IDEONE demo。
正则表达式分解:
\b
- 字边界(如果您测试单个字符串,请使用^
)([^\W\d_])
- 第1组捕获任何ASCII字母(如果您还需要匹配Unicode,请使用re.U
标志)([^\W\d_]*)
- 第2组捕获零个或多个字母([^\W\d_])
- 第3组在...收到一封信。\b
- 尾随字边界(如果您处理单个字符串,则替换为$
)在替换模式中,len(''.join(set(m.group(2))))
正在计算唯一字母出现次数(see this SO post)。
如果您需要处理2个字母的单词,例如Ts
> Ts
,您可以在第二组中使用*
量词替换+
。