Mas*_*son 11 unicode whitespace text tokenize cjk
我需要拆分一个字符串并提取由空白字符分隔的单词.来源可能是英文或日文.英文空白字符包括制表符和空格,日文文本也使用这些字符.(IIRC,所有广泛使用的日语字符集都是US-ASCII的超集.)
因此,我需要用来分割字符串的字符集包括普通的ASCII空格和制表符.
但是,在日语中,还有另一个空格字符,通常称为"全宽空间".根据我Mac的角色查看器实用程序,这是U + 3000"IDEOGRAPHIC SPACE".这是(通常)当用户在日语输入模式下键入时按空格键时的结果.
我还需要考虑其他角色吗?
我正在处理被告知"用空格分隔条目"的用户提交的文本数据.但是,用户正在使用各种计算机和移动电话操作系统来提交这些文本.我们已经看到用户在输入此数据时可能不知道他们是处于日语输入模式还是英语输入模式.
此外,即使在日语模式下,空间键的行为也会因平台和应用程序而异(例如,Windows 7将插入表意空间,但iOS将插入ASCII空间).
所以我想要的基本上是"视觉上看起来像空格的所有角色的集合,可能是在用户按空格键时生成的,或者是tab键,因为许多用户不知道空格和制表符之间的区别,日语和/或英语".
对这样的问题有任何权威的答案吗?
您需要ASCII选项卡,空格和不间断空格(U + 00A0),以及全角空格(已正确标识为U + 3000)。您可能需要换行符和垂直空格字符。如果您的输入使用unicode(而不是Shift-JIS等),那么这就是您所需要的。还有其他(控制)字符,例如\ 0 NULL有时被用作信息定界符,但它们不会在东亚文本中显示为空格-即,它们不会显示为空白。
编辑:马特·鲍尔(Matt Ball)在他的评论中有一个很好的观点,但是,正如他的例子所说明的那样,许多正则表达式实现不能很好地处理全角东亚标点符号。在这方面,值得一提的是Python string.whitespace也不会割芥末。