Python:使用正则表达式从字符串中删除\ u200b

cei*_*999 5 python regex unicode

我有一个网络刮刀,它可以解决论坛问题,将它们分成单个单词并将其写入文本文件.单词存储在元组列表中.每个元组包含单词及其频率.像这样......

[(u'move', 3), (u'exploration', 4), (u'prediction', 21),
 (u'find', 5), (u'user', 2), (u'interface', 2), (u'pleasant', 2),
 (u'am', 11), (u'puzzled', 2), (u'find', 5), (u'way', 5),
 (u'prediction', 21), (u'mode', 2), (u'have', 21),
 (u'explored', 2), (u'file', 9), (u'Can', 7), (u'help', 6),
 (u'Possible', 1), (u'bug', 2), (u'data', 31), (u'is', 17)
Run Code Online (Sandbox Code Playgroud)

但是,论坛上的某些人使用了字符\ u200b,它破坏了我的所有代码,因为该字符不再是Unicode空格.

(u'used\u200b', 1)
Run Code Online (Sandbox Code Playgroud)

打印出来不会产生错误,但写入文本文件会产生错误.我发现string.strip()并且string.replace()没有帮助,所以我想知道如何使用正则表达式库来摆脱那个角色.我计划解析整个元组列表以找到它.

roe*_*and 8

我用python 2.7测试了它.replace按预期工作:

>>> u'used\u200b'.replace(u'\u200b', '*')
u'used*'
Run Code Online (Sandbox Code Playgroud)

剥离:

>>> u'used\u200b'.strip(u'\u200b')
u'used'
Run Code Online (Sandbox Code Playgroud)

请记住,这些函数的参数必须是Unicode文字.它应该是u'\u200b',而不是'\u200b'.注意u在开头.

实际上,将该字符写入文件就可以了.

>>> import codecs
>>> f = codecs.open('a.txt', encoding='utf-8', mode='w')
>>> f.write(u'used\u200bZero')
Run Code Online (Sandbox Code Playgroud)

查看资源: