Python - 문자열에서 특정 단어 추출

JS · 04 Jan 2021

문자열에서 특정 단어를 추출할 때가 있습니다.

이 때 다음 방법들을 이용하면 문자열을 분리하여 특정 문자열을 추출할 수 있습니다.

  • split()을 이용한 방법
  • regex(정규표현식)을 사용한 방법

split()을 이용한 방법

split()을 사용하여 특정 문자를 기준으로 문자열을 분리할 수 있습니다.

Syntax는 다음과 같습니다.

string.split(separator, maxsplit)
  • separator: 문자열을 나눌 때 사용할 문자입니다. 기본 값은 whitespace입니다.
  • maxsplit: 문자열을 나눌 횟수를 지정합니다. 기본 값은 -1이며, 제한 없이 모두 나눈다는 의미입니다.

다음과 같은 문자열이 주어졌을 때, split()은 whitespace를 기준으로 문자열을 나눕니다.

text = 'Hello world, python'
strings = text.split()
print(strings)

Output:

['Hello', 'world,', 'python']

split(','),를 기준으로 문자열을 나눕니다.

text = 'Hello world, python'
strings = text.split(',')
print(strings)

Output:

['Hello world', ' python']

다음과 같이 :로 나눌 수도 있습니다.

text = 'Hello:world:python'
strings = text.split(':')
print(strings)

Output:

['Hello', 'world', 'python']

이렇게 단어 단위로 분리된 리스트에서 원하는 문자열을 사용할 수 있습니다.

regex(정규표현식)을 사용한 방법

regex(정규표현식)으로 특정 문자열을 찾을 수 있습니다. re.findall() 함수에 정규표현식과 문자열을 인자로 전달하면, regex와 일치하는 문자열 리스트가 리턴됩니다. 이 방법은 정규표현식을 알고 있어야 사용할 수 있습니다.

findall()의 Syntax는 다음과 같습니다.

findall(regex, string)

다음과 같이 regex에 r'\w+'를 인자로 전달하면 whitespace 기준으로 문자열을 분리합니다. (\w는 non-word를 의미하며 알파벳, 숫자 등의 문자를 의미합니다.)

import re

text = 'Hello world, python'
strings = re.findall(r'\w+', text)
print(strings)

Output:

['Hello', 'world', 'python']

아래 예제에서 :으로 구분된 단어들은 r'(\w+):?'으로 구분할 수 있습니다. 단어 중에 :가 마지막에 포함되거나 포함되지 않은 모든 단어를 찾습니다.

import re

text = 'Hello:world:python'
strings = re.sub(r'(\w+):?', text)
print(strings)

Output:

['Hello', 'world', 'python']
댓글을 보거나 쓰려면 이 버튼을 눌러주세요.
codechachaCopyright ©2019 codechacha