【问题标题】:Removing Narrow 'No-Break Space' Unicode Characters (U+00A0) in python nlp在 python nlp 中删除狭窄的“无间断空格”Unicode 字符 (U+00A0)
【发布时间】:2020-04-19 07:24:12
【问题描述】:

不间断空格打印为空格,但在内部处理为\xa0。如何一次删除所有这些字符?

到目前为止,我已经直接替换了它:

text = text.replace('\u202f','')  
text = text.replace('\u200d','') 
text = text.replace('\xa0','')

但是每次我从外部来源抓取文本句子时,这些字符都是不同的。如何一次将其全部删除?

【问题讨论】:

    标签: python-3.x string nlp python-unicode unicode-string


    【解决方案1】:

    您可以改用正则表达式替换。
    如果要替换所有空格,可以使用:

    import re
    
    text = re.sub(r'\s', '', text)
    

    这包括所有 unicode 空格,如this question 的回答中所述。
    从该答案中,您可以看到(在撰写本文时),Python 正则表达式中识别为空格的 unicode 常量(例如 \s)如下:

    0x0009
    0x000A
    0x000B
    0x000C
    0x000D
    0x001C
    0x001D
    0x001E
    0x001F
    0x0020
    0x0085
    0x00A0
    0x1680
    0x2000
    0x2001
    0x2002
    0x2003
    0x2004
    0x2005
    0x2006
    0x2007
    0x2008
    0x2009
    0x200A
    0x2028
    0x2029
    0x202F
    0x205F
    0x3000
    

    这看起来很适合您的需求。

    【讨论】:

    • 每天抓取时,通常\u202后面的unicode字符不同。所以,我想删除它所有的出现。我该怎么做?
    • 所以你是说它们不是空格?那它们是什么?您是否尝试过答案中的空格删除?
    • 我更新了答案以显示正则表达式中被识别为空格的内容。
    猜你喜欢
    • 2010-10-10
    • 1970-01-01
    • 2014-01-26
    • 2018-04-01
    • 2017-08-24
    • 2011-02-05
    • 2018-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多