Как разбить строку, которая есть в японских символах? - PullRequest
0 голосов
/ 23 октября 2019

У меня есть японская строка "さ い た ま 市 中央 区" в моем столе улья. Я просто хочу первую часть строки из таблицы, т.е. さ さ た ま 市.

Я пробовал с функцией разделения и регулярным выражением, оно не работает. Я попробовал с кустами и питоном

Пробовал все это ниже, это не сработало

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

Просто я хочу первую часть строки.

Ответы [ 3 ]

2 голосов
/ 23 октября 2019

Публикация этого ответа также ...

Копирование / вставка текста из вашего вопроса и запуск 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]".

0 голосов
/ 23 октября 2019

Работает нормально для меня. Вам просто нужно скопировать / вставить этот нестандартный японский пробел в аргумент функции split() при использовании Python 2.

>>> a = "さいたま市 中央区"
>>> a.split(' ')      # use this for python 2.*
['さいたま市', '中央区']
>>> a.split()          # this works fine in python 3
['さいたま市', '中央区']
>>> 
0 голосов
/ 23 октября 2019

Итак, следует иметь в виду, что японские пробелы не совпадают с английскими (я не уверен, почему, но значения ascii разные). Это означает, что вы не можете использовать \ s или пытаться использовать split, используя обычные пробелы. (Как вы пытались в своем примере)

Требуемое регулярное выражение - (.+)\h(.+), где вы ищете горизонтальные пробелы вместо обычных пробелов. реализация здесь

...