在 python nlp 中删除窄“无间断空格”Unicode 字符 (U+00A0)

问题描述 投票:0回答:2

不间断空格被打印为空白,但在内部处理为

\xa0
。如何一次删除所有这些字符?

目前我已经直接替换了:

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

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

python-3.x string nlp python-unicode unicode-string
2个回答
2
投票

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

import re

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

这包括所有 unicode 空白,如此问题的答案中所述。
从这个答案中,您可以看到(在撰写本文时),Python 正则表达式中被识别为空格(例如

\s
)的 unicode 常量是:

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

这看起来好像能满足您的需求。


0
投票

您可以使用

\h
(水平空白)来匹配不间断空格(\s 也将匹配垂直空白、换行符等)

\h
相当于
[\t\x{00A0}\x{1680}\x{180E}\x{2000}\x{2001}\x{2002}\x{2003}\x{2004}\x{2005}\x{2006}\x{2007}\x{2008}\x{2009}\x{200A}\x{202F}\x{205F}\x{3000}]

https://regex101.com/ 是一个很棒的正则表达式资源。您可以在快速参考(右下角)中搜索“whitespace”,以查看可能对您有帮助的其他相关选项。 (记得检查完整的搜索结果)

© www.soinside.com 2019 - 2024. All rights reserved.