Разбор корейского текста в список с помощью регулярных выражений - PullRequest
0 голосов
/ 25 января 2019

У меня есть некоторые данные, хранящиеся в виде фрейма данных pandas, и один из столбцов содержит текстовые строки на корейском языке.Я хотел бы обработать каждую из этих текстовых строк следующим образом:

my_string = '모질상태불량(피부상태불량, 심하게 야윔), 치석심함, 양측 수정체 백탁, 좌측 화농성 눈곱심함(7/22), 코로나음성(활력저하)'

В такой список:

parsed_text = '모질상태불량, 피부상태불량, 심하게 야윔, 치석심함, 양측 수정체 백탁, 좌측 화농성 눈곱심함(7/22), 코로나음성, 활력저하'

Поэтому проблема состоит в том, чтобы определить случаи, когда слово (или несколькослова) сопровождаются круглыми скобками только с текстом (могут быть одним словом или несколькими словами, разделенными запятыми) и заменяют их всеми словами (перед и внутри скобок), разделенными запятой (для последующей обработки).Если за словом следуют круглые скобки, содержащие цифры (как в этом случае 7/22), оно должно быть сохранено как есть.Если за словом не следуют какие-либо круглые скобки, его также следует оставить как есть.Кроме того, я хотел бы сохранить порядок слов (как они появились в исходной строке).

Я могу извлечь текст в скобках, используя регулярное выражение следующим образом:

corrected_string = re.findall(r'(\w+)\((\D.*?)\)', my_string)

, что приводит кthis:

[('모질상태불량', '피부상태불량, 심하게 야윔'), ('코로나음성', '활력저하')] 

Но у меня возникают трудности при создании результирующей строки, то есть при замене исходного текста на соответствующий шаблон.Какие-либо предложения?Спасибо.

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Вы можете использовать re.findall с шаблоном, который по выбору соответствует номеру, заключенному в скобки:

corrected_string = re.findall(r'[^,()]+(?:\([^)]*\d[^)]*\))?', my_string)
0 голосов
/ 25 января 2019

Немного неуклюже, но вы можете попробовать:

my_string_list = [x.strip() for x in re.split(r"\((?!\d)|(?<!\d)\)|,", my_string) if x]
# you can make string out of list then.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...