Python 使用正则表达式将朝鲜语文本解析为列表

Python 使用正则表达式将朝鲜语文本解析为列表,python,regex,replace,pattern-matching,cjk,Python,Regex,Replace,Pattern Matching,Cjk,我有一些数据存储为熊猫数据框,其中一列包含朝鲜语文本字符串。我希望按如下方式处理这些文本字符串: my_string = '모질상태불량(피부상태불량, 심하게 야윔), 치석심함, 양측 수정체 백탁, 좌측 화농성 눈곱심함(7/22), 코로나음성(활력저하)' corrected_string = re.findall(r'(\w+)\((\D.*?)\)', my_string) 进入如下列表: parsed_text = '모질상태불량, 피부상태불량, 심하게 야윔, 치석심함

我有一些数据存储为熊猫数据框,其中一列包含朝鲜语文本字符串。我希望按如下方式处理这些文本字符串:

my_string = '모질상태불량(피부상태불량, 심하게 야윔), 치석심함, 양측 수정체 백탁, 좌측 화농성 눈곱심함(7/22), 코로나음성(활력저하)'
corrected_string = re.findall(r'(\w+)\((\D.*?)\)', my_string)
进入如下列表:

parsed_text = '모질상태불량, 피부상태불량, 심하게 야윔, 치석심함, 양측 수정체 백탁, 좌측 화농성 눈곱심함(7/22), 코로나음성, 활력저하'
因此,问题在于确定一个单词(或多个单词)后面紧跟着仅带文本的括号(可以是一个单词或多个单词,用逗号分隔)的情况,并用逗号分隔的所有单词(括号前和括号内)替换它们(用于以后的处理)。如果一个单词后面有包含数字的括号(如本例中的7/22),则应保持原样。如果一个单词后面没有任何括号,它也应该保持原样。此外,我希望保留单词的顺序(它们出现在原始字符串中)

我可以使用正则表达式提取括号中的文本,如下所示:

my_string = '모질상태불량(피부상태불량, 심하게 야윔), 치석심함, 양측 수정체 백탁, 좌측 화농성 눈곱심함(7/22), 코로나음성(활력저하)'
corrected_string = re.findall(r'(\w+)\((\D.*?)\)', my_string)
这就产生了:

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

但我很难创建结果字符串,即用匹配的模式替换原始文本。有什么建议吗?谢谢。

这有点笨拙,但你可以试试:

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.

my\u string\u list=[x.strip()代表re.split(r“\(?!\d)|)(?您可以使用
re.findall
的模式,该模式可以选择匹配括号中的数字:

corrected_string = re.findall(r'[^,()]+(?:\([^)]*\d[^)]*\))?', my_string)

试试。
rx=r'(\w+\([\d/]*\)(\()\)”
def repl(m):if m.group(1):return m.group(1)elif m.group(2):return”,“else:return”“
re.sub(rx,repl,s)
。为什么不回答呢?@Rahul,因为它遵循不同的逻辑。如果它有效,我会发布。谢谢。效果很好!我很感激。有一件事,当你看到结果列表中的第三个单词时,它在右括号中留下了。这只是为了你的理解。你需要从这里开始工作。另请参阅Wiktor Stribiżew的方法。@Rahul谢谢,拉胡尔。这个太完美了!谢谢。