【发布时间】:2013-12-16 20:26:04
【问题描述】:
我应该写一个小程序,接收波斯文本,并在某些地方将空格更改为半空格。在某些语言中使用半空格或 zero-width non-joiner 来避免在规范化文本时使用 ligature。它的 unicode 字符应该是 '\u200c',在某些文本编辑器中,它可以通过 SHIFT+SPACE 显示在屏幕上:
import re
txt = input('Please enter a Persian text: ')
original_pattern = r'\b(\w+)\s*(ها|هايي|هايم|هاي)\b'
new_pattern = r'\1 \2'
new_txt = re.sub (original_pattern, new_pattern, txt)
print (new_txt)
在上面的代码中,new_pattern 应该在\1 和\2 之间引入一个半空格,目前它们之间有一个空格。
问题是:我怎样才能在那里放置一个半空格?我尝试了以下方法,在这两种情况下都出现了语法错误:
new_pattern = ur'\1\u200c\2'
new_pattern = r'\1\u200c\2'
顺便说一句,虽然在 Wikipedia 文章中 ZWNJ 的 unicode 字符被指定为 U+200c,但它在 python shell 中似乎并没有以这种方式工作,它实际上使空间加倍:
>>> print ('He is a',u'\u200c','boy')
He is a boy
>>> print ("کتاب",u"\u200c","ها")
کتاب ها
>>> print ("کتاب ها")
کتاب ها
>>>
【问题讨论】:
-
什么版本的 Python? 2.x 还是 3.x?