给定unicode和ascii字符的混合字符串,例如:
它看灵魂塑Nike造得和学问同等重要。目标是用空格填充ascii子字符串,即:
它看灵魂塑 Nike 造得和学问同等重要。我试过使用([^[:ascii:]])正则表达式,它看起来很适合匹配子字符串,例如https://regex101.com/r/FVHhU1/1
但在代码中,使用' \1 '进行替换并不能实现所需的输出。
>>> import re
>>> patt = re.compile('([^[:ascii:]])')
>>> s = u'它看灵魂塑Nike造得和学问同等重要。'
>>> print (patt.sub(' \1 ', s))
它看灵魂塑Nike造得和学问同等重要。如何在混合unicode-ascii字符串中填充带有空格的ascii字符?
发布于 2017-07-07 09:14:28
其模式应是:
([\x00-\x7f]+)所以你可以使用:
patt = re.compile('([\x00-\x7f]+)')
patt.sub(r' \1 ',s)这就产生了:
>>> print(patt.sub(r' \1 ',s))
它看灵魂塑 Nike 造得和学问同等重要。ASCII定义为在00和7f之间使用十六进制代码的字符范围。因此,我们定义了一个范围,如[\x00-\x7f],使用+表示一个或多个,并将匹配组替换为r' \1 '以添加两个空格。
https://stackoverflow.com/questions/44966911
复制相似问题