Python 正则替换 Unicode
在第一个测试字符串中,我想把文本中间的Unicode右箭头字符替换成空格,但似乎没有成功。
总的来说,我想删除所有单个字符或多个Unicode的“非单词”字符,但如果是由字母a-z、数字0-9和Unicode字符混合组成的单词,或者只是\w的情况,我希望保留它们。
# -*- coding: utf-8 -*-
import re
str = 'hi… » Test'
str = 're of… » Pr'
str = 're of… » Pr | removepipeaswell'
print str
str = re.sub(r' [^a-z0-9]+ ', ' ', str , re.UNICODE|re.MULTILINE)
# str = re.sub(r' [^\p{Alpha}] ', ' ', str, re.UNICODE)
print str
're of… Pr removepipeaswell' #expected output
str_nbsp = 'afds » asf'
编辑:我添加了另一个测试字符串,我不想删除“of...”这些Unicode点,我只想删除多个Unicode的(非单词)字符。
编辑:使用这个方法在测试案例中有效(但在完整的HTML中不行??? - 它似乎只替换了字符串前半部分的匹配项,然后忽略了其余部分。)
str = re.sub(r' [^a-z0-9]+ ', ' ', str , re.UNICODE|re.MULTILINE)
编辑:真是让人无奈,居然是因为没有正确读取参数列表之类的愚蠢问题:http://bytes.com/topic/python/answers/689341-sub-does-not-replace-all-occurences
[刚刚删除自己回复的那位 - 感谢你的帮助。]
str = re.sub(r' [^a-z0-9]+ ', ' ', str)
最终的测试字符串“str_nbsp”没有匹配上上面的正则表达式。因为其中一个空格字符实际上是一个不换行的空格字符。我使用了www.regexr.com,并将鼠标悬停在每个字符上来弄清楚这一点。
1 个回答
3
str = re.sub(r' [^a-z0-9]+ ', ' ', str)
当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。