반응형

파이썬 문자열 함수

실습

text = "hello"
upper_text = text.upper()
print(upper_text)

sentence = 'hello python'

caplitalzed_sentence = sentence.capitalize()
print(caplitalzed_sentence)

title_sentence = sentence.title()
print(title_sentence)

swapped_title_sentence = title_sentence
print(swapped_title_sentence)

text = ' hello python '
print(text)

print(text.strip())
print(text.rstrip())
print(text.lstrip())

print(text.replace(' ', '.'))
print(text.replace('hello', 'bye'))

text = 'hello python'
print(text)

print(text.split())

print(text.split('p'))

test = '1,62,7,543,12\n'
split_test = test.strip().split(',')
print(split_test)
print(list(map(int, test.strip().split(','))))

join_split_test = ','.join(split_test)
print(join_split_test)

test1 = 'hello python\n this is nlp tutorial\n string function ex\n'
print(test1)
print(test1.splitlines())

text = '123'
print(text.isdigit())

text = 'abc'
print(text.isalpha())

text = '1a2b3c'
print(text.isdigit())
print(text.isalpha())
print(text.isalnum())

text = 'hello'
print(text.islower())
print(text.isupper())

text = 'HELLO'
print(text.islower())
print(text.isupper())

text = 'hello'
print(text.startswith('h'))
print(text.endswith('o'))

text = 'hi1 hi2 hi3 hi4'
print(text.count('hi'))
print(text.find('hi'))
print(text.find('hi', 1))
print(text.rfind('hi'))
print(text.find('hi5'))
print(text.index('hi'))
#print(text.index('hi5'))

print(text.index('hi5'))

→ hi5 라는 string을 찾을 수 없어서 오류가 남

정규표현식

  • 복잡한 문자열을 처리할 때 사용하는 기법
  • 파이썬만의 고유 문법이 아니라 문자열을 처리하는 모든 곳에서 활용
  • re라는 모듈 사용

\b : 단어의 경계(word boundary) 문자자체라서 \하나를 더 써야한다.

정규표현식 실습

import re

# . 한 개의 임의의 문자
r = re.compile("a.c")
print(r.search("abd"))
print(r.search("abc"))

# ? 앞의 문자가 존재 or 미존재
r = re.compile("abc?")
print(r.search("abc"))
print(r.search("ab"))

# * 앞의 문자가 0개 이상
r = re.compile("ab*c")
print(r.search("ac"))
print(r.search("abc"))
print(r.search("abbbc"))

# + 앞의 문자가 1개 이상
r = re.compile("ab+c")
print(r.search("ac"))
print(r.search("abc"))
print(r.search("abbbc"))

# ^ 시작되는 글자를 지정
r = re.compile("^bc")
print(r.search("abc"))
print(r.search("bc"))

# {숫자} 해당 문자를 숫자만큼 반복
r = re.compile("ab{2}c")
print(r.search("abc"))
print(r.search("abbc"))
print(r.search("abbbc"))

# {숫자1, 숫자2} 해당 문자를 숫자1 이상, 숫자2 이하만큼 반복
r = re.compile("ab{2,4}c")
print(r.search("abc"))
print(r.search("abbc"))
print(r.search("abbbc"))
print(r.search("abbbbc"))
print(r.search("abbbbbc"))

# {숫자,} 해당 문자를 숫자 이상 만큼 반복
r = re.compile("ab{2,}c")
print(r.search("abc"))
print(r.search("abbc"))
print(r.search("abbbc"))
print(r.search("abbbbc"))
print(r.search("abbbbbc"))

# [문자] 문자들 중 한개의 문자와 매치
# [a-zA-Z]는 알파벳 전부를 의미, [0-9]는 숫자 전부를 의미
r = re.compile("[abc]")
print(r.search("a"))
print(r.search("d"))

# [^문자] 제외한 모든 문자를 매치
r = re.compile("[^ac]")
print(r.search("a"))
print(r.search("d"))

정규표현식 실습2

##### 숫자로만 이루어진 단어를 찾아서 반환 #####
sentence = '1 star lstar 4 dollar 4doller 10 people 10people'

# coding
# 1, 4, 10 결과로 반환하도록
r = re.compile("\\b[0-9]+\\b")
result = r.findall(sentence)
print(result)


## 92년생 찾기 ###
def get_years_92(birthdays):
    r = re.compile('92[0-9]{4}')
    result = []
    # coding
    for birth in birthdays:
        if r.match(birth):
            result.append(birth)
    return result

def get_years_92_function(birthdays):
    result = []
    # coding
    for birth in birthdays:
        if birth.startswith('92'):
            result.append(birth)
    return result

birthdays = ['911211', '920109', '930205', '941124', '900502', '920412', '931121', '940608', '950926']

print(get_years_92(birthdays))
print(get_years_92_function(birthdays))

### 뉴스 기사에서 이메일 주소 찾기 ###
news = '기사제목\n기사본문\nhello@chosun.com\n2020-09-08\n'

r = re.compile('[a-zA-Z0-9]+@[a-zA-Z0-9]+\.com')
result = r.search(news)
print(result)
print(result.group())


* String 만 나오게 하는 방법 *

  1. result.start() 또는 result.end() 함수를 활용해서 시작위치랑 끝 위치를 받아와서 news[result.start():result:end()] 출력
  2. result.group() 함수 호출
반응형

+ Recent posts