Python删除额外的特殊Unicode字符

use*_*950 2 python unicode text-processing special-characters nltk

我正在用 python 处理一些文本,它在内部已经是 unicode 格式,但我想摆脱一些特殊字符并用更标准的版本替换它们。

我目前有一条看起来像这样的线路,但它变得越来越复杂,我认为它最终会带来更多麻烦。

tmp = infile.lower().replace(u"\u2018", "'").replace(u"\u2019", "'").replace(u"\u2013", "").replace(u"\u2026", "")
Run Code Online (Sandbox Code Playgroud)

例如U \ 2018 \ u2019是单引号。这些在某种程度上是可以接受的,但对于这种类型的文本处理,我认为不需要它们。

喜欢的东西这个U \ 2013 EN DASH和肯定是不需要的水平省略。

有没有办法删除这些引号并使用简单的标准引号,这些引号不会破坏“使用 nltk”的文本处理,并删除诸如 EN DASH、水平省略号之类的内容,而不会像我看到的那样发出如此巨大的呼叫,就像我看到的那样开始抬头上面的示例代码?

ale*_*xis 5

如果您的文本是英文的并且您希望以人类可读的方式对其进行清理,请使用第三方模块unidecode。它用最接近的 ascii 外观替换各种字符。只需应用于unidecode.unidecode()任何字符串即可进行替换:

from unidecode import unidecode
clean = unidecode(u'Some text: \u2018\u2019\u2013\u03a9')
Run Code Online (Sandbox Code Playgroud)