我将一些数据存储为 pandas 数据框,其中一列包含韩语文本字符串。我想按如下方式处理这些文本字符串中的每一个:
my_string = '모질상태불량(피부상태불량, 심하게 야윔), 치석심함, 양측 수정체 백탁, 좌측 화농성 눈곱심함(7/22), 코로나음성(활력저하)'
进入这样的列表:
parsed_text = '모질상태불량, 피부상태불량, 심하게 야윔, 치석심함, 양측 수정체 백탁, 좌측 화농성 눈곱심함(7/22), 코로나음성, 활력저하'
所以问题是识别一个词(或几个词)后跟括号的情况,只有文本(可以是一个词或几个词,用逗号分隔)并用所有词替换它们(括号前和括号内)用逗号分隔(供以后处理)。如果一个单词后跟包含数字的括号(如本例中的 7/22),则应保持原样。如果一个词后面没有任何括号,它也应该保持原样。此外,我想保留单词的顺序(因为它们出现在原始字符串中)。
我可以使用正则表达式提取括号中的文本,如下所示:
corrected_string = re.findall(r'(\w+)\((\D.*?)\)', my_string)
产生这个:
[('모질상태불량', '피부상태불량, 심하게 야윔'), ('코로나음성', '활력저하')]
但是我在创建结果字符串时遇到了困难,即将我的原始文本替换为我匹配的模式。有什么建议么?谢谢。
请您参考如下方法:
您可以将 re.findall 与一个模式一起使用,该模式可以选择匹配括号中的数字:
corrected_string = re.findall(r'[^,()]+(?:\([^)]*\d[^)]*\))?', my_string)
