Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
코퍼스와 같은 말뭉치에서 정해진 단위로 문장을 나누고, 한 문장에서 특정한 패턴이 있을 경우, 그 문장을 지우는 기능
import re
class StringReplaceUtil(object):
"""
코퍼스와 같은 말뭉치에서 정해진 단위로 문장을 나누고, 한 문장에서 특정한 패턴이 있을 경우, 그 문장을 지우는 기능
"""
def __init__(self, text: str, token_pattern: str):
"""
여러 문장을 특정한 패턴 단위로 나누어 사용.
:param text: 입력 텍스트 (=여러 문장)
:param token_pattern: 한 문장을 나타내는 패턴
"""
self.token_re = re.compile(token_pattern, flags=re.S) # re.S=여러 줄에서 찾기
self.text = text
def replace(self, pattern: str, to_str: str):
"""
패턴을 찾아 특정 문자열로 바꿈
:param pattern: 문장안에서 찾을 패턴
:param to_str: 바꾼후의 문자열
:return:
"""
sentences = []
last_end = 0
remove_re = re.compile(pattern, flags=re.S)
for match in self.token_re.finditer(text):
start, end = match.span()
sentences.append(self.text[last_end: start])
last_end = end
if remove_re.search(self.text[start:end]):
sentences.append(to_str) # 변경 후
else:
sentences.append(self.text[start:end]) # 원본 그대로
sentences.append(self.text[last_end:]) # 남은 마지막 부분도 추가
return ''.join(sentences)
if __name__ == '__main__':
text = """abㄱcdefg
hijkㅎ
lmnㄱopqr
s9t
ㅎuvw
xyz"""
print(StringReplaceUtil(text, token_pattern=r'[ㄱ].*?[ㅎ]').replace(pattern=r'[0-9]+', to_str=''))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment