如何拆分日文字符的字符串?

How to split the string which is in japanese characters?

我的蜂巢table中有一个日文字符串“さいたま市 中央区”。我只想要 table 中的字符串的第一部分,即 さいたま市。

我试过使用拆分函数和正则表达式,但没有用。我尝试使用蜂巢和 python

下面的都试过了,没用

select split("さいたま市 中央区",'')[0];
select regexp_extract("さいたま市 中央区","^(.*?)\s(.*)",1)
select regexp_extract("さいたま市 中央区","[ur'[\u4e00-\ufaff]']",1) 

只要字符串的第一部分。

所以要记住一件事,日语空格与英语空格不同(我不确定为什么,但 ascii 值不同)。这意味着您不能使用 \s 或尝试使用 split 使用普通空格。 (就像您在示例中尝试过的那样)

您需要的正则表达式是- (.+)\h(.+) 您在其中查找水平空格而不是常规空格。 implementation here

对我来说很好用。当使用 python 2.

时,您只需要 copy/paste 那个非标准的日语 space 字符到 split() 函数的参数中
>>> a = "さいたま市 中央区"
>>> a.split(' ')      # use this for python 2.*
['さいたま市', '中央区']
>>> a.split()          # this works fine in python 3
['さいたま市', '中央区']
>>> 

也将此作为答案发布...

Copy/pasting 你问题的文字 运行 repr 给了我

>>> repr("""I have a japanese string "さいたま市 中央区" in my hive table""")
'\'I have a japanese string "さいたま市\u3000中央区" in my hive table\''

这表明 split(... that text ..., '\u3000')[0] 应该会产生您想要的结果。

表达式"[ur'[\u4e00-\ufaff]']"看起来非常错误;将其更正为 ur'[\u4e00-\ufaff]' 也可能有效。或者可以简单地尝试 "[\u4e00-\ufaff]".