繁体   English   中英

Python字母重复替换Unicode字符串

[英]Python letters duplicates replace in Unicode string

我需要在字符串中替换两个输入错误的字母,例如“bbig”。 但它只适用于拉丁字母,而不适用于西里尔字母。 我在Centos Linux下使用Python 2.6.6版。

#!/usr/bin/python
# -*- coding: utf-8 -*-
import re
def reg(item):
  item = re.sub(r'([A-ZА-ЯЁЄЇІ])\1', r'\1', item, re.U)
  #this work only with latin too
  #item = re.sub(r'(.)\1', r'\1', item, re.U)
  return item

print reg('ББООЛЛЬЬШШООЙЙ')
print reg('BBIIGG')

上面的代码返回:

  • ББООЛЛЬЬШШООЙЙ

我做错了什么? 谢谢你的帮助。

您正在使用字节字符串。 这使得您使用的所有内容都匹配并替换字节。 如果你想匹配和替换字母,这将不起作用。

改为使用unicode字符串:

#!/usr/bin/python
# -*- coding: utf-8 -*-
import re
def reg(item):
  item = re.sub(ur'([A-ZА-ЯЁЄЇІ])\1', r'\1', item, re.U)
  #this work only with latin too
  #item = re.sub(r'(.)\1', r'\1', item, re.U)
  return item

print reg(u'ББООЛЛЬЬШШООЙЙ')
print reg(u'BBIIGG')

请注意,这适用于预先组合的字符,但使用组合标记组成的字符将会平滑。

如果用户试图输入这个句子(提示:检查它的第二个单词),那也将是灾难性的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM