X-M*_*ann 5 python regex unicode
在下面的正则表达式中,我希望字符串中的每个字符都替换为"X",但它不起作用.
在Python 2.7中:
>>> import re
>>> re.sub(u"[a-zA-Z]","X","dfäg")
'XX\xc3\xa4X'
Run Code Online (Sandbox Code Playgroud)
要么
>>> re.sub("[a-zA-Z]","X","dfäg",re.UNICODE)
u'XX\xe4X'
Run Code Online (Sandbox Code Playgroud)
在Python 3.4中:
>>> re.sub("[a-zA-Z]","X","dfäg")
'XXäX'
Run Code Online (Sandbox Code Playgroud)
有可能以某种方式'配置'[a-zA-Z]模式以匹配'ä','ü'等?如果无法做到这一点,我如何在方括号之间创建一个类似的字符范围模式,包括通常的"完整字母"范围内的Unicode字符?我的意思是,例如,在像德语这样的语言中,'ä'将被放置在字母表中靠近'a'的位置,因此可以预期它将包含在'az'范围内.
您可以使用
(?![\d_])\w
Run Code Online (Sandbox Code Playgroud)
带有 Unicode 修饰符。该(?![\d_])先行处理限制\w速记班,从而它不能匹配任何数字(\d)或下划线。
一个Python 3 演示:
import re
print (re.sub(r"(?![\d_])\w","X","dfäg"))
# => XXXX
Run Code Online (Sandbox Code Playgroud)
至于Python 2:
# -*- coding: utf-8 -*-
import re
s = "dfäg"
w = re.sub(ur'(?![\d_])\w', u'X', s.decode('utf8'), 0, re.UNICODE).encode("utf8")
print(w)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3162 次 |
| 最近记录: |