【问题标题】:Remove special quotation marks and other characters删除特殊引号和其他字符
【发布时间】:2017-06-28 13:50:31
【问题描述】:

我正在尝试从newspaper 下载使用Article 的文章,并尝试使用nltk word_tokenizer 对单词进行标记。问题是,当我尝试打印已解析的文章文本时,其中一些文章具有特殊的引号,例如 ,它们不会被标记器过滤掉,因为它会是常规的'"

有没有办法用普通引号替换这些特殊引号,或者更好地删除标记器可能遗漏的所有可能的特殊字符?

我试图通过在代码中明确提及这些特殊字符来删除它们,但它给了我错误Non-UTF-8 code starting with '\x92'

【问题讨论】:

    标签: python nltk python-newspaper


    【解决方案1】:

    使用 unidecode 包通常会将这些字符替换为 utf-8 字符。

    from unidecode import unidecode
    text = unidecode(text)
    

    然而,一个缺点是您还会更改一些您可能想要保留的字符(例如重音字符)。如果是这种情况,一个选项是使用regular expressions 专门擦除(或替换)一些预先识别的特殊字符:

    import re
    exotic_quotes = ['\\x92'] # fill this up
    text = re.sub(exotic_quotes, "'", text) # changing the second argument to fill the kind of quote you want to replace the exotic ones with
    

    我希望这会有所帮助!

    【讨论】:

    • 谢谢!这完美地工作。有没有办法完全删除这些非 utf-8 字符的任何单词?因为对于我的具体应用,我真的不需要任何特殊字符或标点符号,只需要文章中的实际 utf-8 单词。
    • 不客气。使用 unidecode 应该替换所有非 utf-8 字符,但保留标点符号等。如果您只想保留字母(和空格),请使用正则表达式:text = re.sub('[^A-Za-z ]', '', text)。如果你想去掉包含任何非 utf8 字符的单词,请使用更复​​杂的正则表达式!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    • 2017-07-25
    相关资源
    最近更新 更多