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

v6ylcynt  于 2021-06-25  发布在  Hive
关注(0)|答案(3)|浏览(576)

我有一根日本弦“さいたま市 公司中央区" 在我的 hive table上。我只需要表中字符串的第一部分,即さいたま市.
我试过用分裂函数和正则表达式,它不起作用。我试过用Hive和Python
尝试了下面所有这些,它没有工作

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

我只想要弦的第一部分。

fxnxkyjh

fxnxkyjh1#

将此作为答案发布。。。
复制/粘贴问题文本并运行 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]" .

kulphzqa

kulphzqa2#

所以有一件事要记住,日语空格和英语空格不一样(我不知道为什么,但是ascii值不同)。这意味着您不能使用\s或尝试使用 split 使用正规空间(就像你在例子中尝试的那样)
你需要的正则表达式是- (.+)\h(.+) 在这里,您可以查找水平空格,而不是常规空格。此处执行

r6hnlfcb

r6hnlfcb3#

对我来说很好。您只需要将非标准的日语空格字符复制/粘贴到 split() 使用python 2时的函数。

>>> a = "さいたま市 中央区"
>>> a.split(' ')      # use this for python 2.*
['さいたま市', '中央区']
>>> a.split()          # this works fine in python 3
['さいたま市', '中央区']
>>>

相关问题