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

Regex 如何拆分日语字符的字符串?,regex,hive,python-2.x,Regex,Hive,Python 2.x,我有一根日本线“さいたま市 中央区" 在我的蜂巢表中。我只需要表中字符串的第一部分,即さいたま市. 我试过使用拆分函数和正则表达式,但不起作用。我试过使用hive和python 试过下面的所有这些,都不起作用 select split("さいたま市 中央区",'')[0]; select regexp_extract("さいたま市 中央区","^(.*?)\\s(.*)",1) select regexp_extract("さいたま市 中央区","[ur'[\u4e00-\ufaff]']",

我有一根日本线“さいたま市 中央区" 在我的蜂巢表中。我只需要表中字符串的第一部分,即さいたま市.

我试过使用拆分函数和正则表达式,但不起作用。我试过使用hive和python

试过下面的所有这些,都不起作用

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

我只想要字符串的第一部分。

所以有一件事要记住,日语空格和英语空格不一样(我不知道为什么,但是ascii值不同)。这意味着您不能使用\s或尝试使用普通空格来使用
拆分
。(就像您在示例中尝试的那样)


你需要的正则表达式是-
(.+)\h(+.+)
,在这里你寻找水平空格而不是常规空格。

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


您需要的正则表达式是-
(.+)\h(+
,在这里您可以查找水平空格而不是常规空格。

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

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

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

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

也将此作为答案发布

复制/粘贴问题中的文本并运行
repr
会让我

repr(““我有一个日文字符串”さいたま市 中央区" 在我的蜂箱表中(“”) “\'我有一根日语字符串”さいたま市\\u3000中央区" 在我的蜂巢桌上“ 这表明
split(…该文本…,'\u3000')[0]
应该产生您想要的结果


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

将此作为答案发布

复制/粘贴问题中的文本并运行
repr
会让我

repr(““我有一个日文字符串”さいたま市 中央区" 在我的蜂箱表中(“”) “\'我有一根日语字符串”さいたま市\\u3000中央区" 在我的蜂巢桌上“ 这表明
split(…该文本…,'\u3000')[0]
应该产生您想要的结果


表达式
“[ur'[\u4e00-\ufaff]]”
看起来非常错误;将其更正为
ur'[\u4e00-\ufaff]'
可能也会起作用。或者可以尝试简单的
“[\u4e00-\ufaff]“

Python与您的问题有什么关系?您仍然希望在空格上拆分,因此日语也与您的问题无关。我尝试在上面的字符串上执行
。拆分()
,效果与您预期的一样<代码>”さいたま市 中央区".split()
repr(““我有一个日文字符串”さいたま市 中央区" 在我的配置单元表“”中,“”
给我
“\'我有一个日文字符串”さいたま市\\u3000中央区" 在我的配置单元表\''
中,您能证实这实际上是您正在尝试处理的吗?明显的
是。split('\u3000')吗
不要做你想做的事?再一次,请澄清这与Python的关系,以及(如注释所示)你是否实际使用的是Python 2而不是推荐的Python 3版本。还要注意,如果你实际上使用的是Python 2,我们需要知道你试图处理的文件的确切编码。如果你不知道,可能显示几个字节的十六进制转储,其中实际的类空格字符可见(但仅显示周围上下文的几个字节,而不是整个文件)。可能还会看到Python与您的问题有什么关系中的提示?您仍然希望在空格上拆分,因此日语也与您的问题无关。我尝试在上面的字符串上执行了
。拆分()
,效果与您预期的一样。
”さいたま市 中央区.split()
repr(““我有一个日文字符串”さいたま市 中央区" 在我的配置单元表“”中,“”
给我
“\'我有一个日文字符串”さいたま市\\u3000中央区" 在我的配置单元表\''
中,您能证实这实际上是您正在尝试处理的吗?明显的
是。split('\u3000')吗
不要做你想做的事?再一次,请澄清这与Python的关系,以及(如注释所示)你是否实际使用的是Python 2而不是推荐的Python 3版本。还要注意,如果你实际上使用的是Python 2,我们需要知道你试图处理的文件的确切编码。如果你不知道,可能会显示几个字节的十六进制转储,其中实际的空格字符是可见的(但只是周围上下文的几个字节,而不是整个文件)。可能还会看到提示,所有这些字符串都在txt文件中。下面的代码我在python 2中尝试过:test_list=[],open(“T.txt”)作为f:for-for-in-in-f:item=item.split(“”)测试列表。追加(项目[0])打印测试_list@MJM您需要更改为python3或确保已复制/粘贴
a.split() ')来自我的答案,其中包含日语空格字符。问题是所有这些字符串都在txt文件中。下面的代码是我在python 2中尝试过的:test_list=[],其中open(“T.txt”)作为f:for-for-in-in-f:item=item.split(“”)test_list.append(item[0])打印测试_list@MJM您需要更改为python3或确保已复制/粘贴
a.split() ')从我的答案中,包含了日语空格字符。这对我不起作用。我尝试过,从hmm中选择regexp_extract(,“(++)\h(+)”),这很奇怪,因为它在regex101(我已链接)上工作得很好,也许还有其他事情发生了?这很奇怪