본문 바로가기
Study (Data Science)/ML

문자열다루기, 정규표현식

by 콜라찡 2022. 12. 8.

https://developer-rooney.tistory.com/47
Aiffel lms

인코딩과 유니코드

  • 인코딩 (encoding): 문자열을 바이트로 변환하는 과정
  • 디코딩 (decoding) : 바이트를 문자열로 변환하는 과정
  • 유니코드(Unicode) :  ISO(International Standards Organization); 전 세계 문자를 모두 표시할 수 있는 표준 코드
  • UTF-8, UTF-16  : 유니코드를 표현하는 인코딩 방식들. 인코딩시 최소 8bit 혹은 16bit가 필요한가의 의미.
    • 대세는 UTF-8이다. UTF-8은 문자 표현 시 1~4bytes 가 필요하고, UTF-16는 2~4bytes가 필요하다. 저장용량이 중요할 때에 코드들의 문자에 따라 잘 선택해줘야 한다. 영문은 UTF-8일 때 1byte, UTF-16일때 2bytes 이고, 한글은 UTF-8일 때 3bytes, UTF-16일 때 2bytes 이다. 그러므로 영문이 많으면 UTF-8, 한글이 많으면 UTF-16가 좋다.  
  • 파이썬 2에서는 인코딩한 후에도 아스키(ascii) → 유니코드(unicode) 변환 등의 작업이 필요했지만,
  • 파이썬 3부터는 문자열이 무조건 유니코드로 인코딩되므로 해당 텍스트가 인코딩되어 있는지 혹은 디코딩되어 있는지만 고려하면 됨.

 

Escape String 

\를 붙여 원래의 의미를 벗어나는 문자들.

이 방법이 아니면 r" "  스트링앞에 r을 붙여 raw string 으로 지정해주면 특수기호가 그대로 출력된다.

Aiffel lms

startswith, endswith

  • startswith : " "로 시작하는 문자열을 찾아줌
  • endswith : " "로 끝나는 문자열을 찾아줌
# startswith
EmployeeID = ['OB94382', 'OW34723', 'OB32308', 'OB83461', 
                                  'OB74830', 'OW37402', 'OW11235', 'OB82345'] 
Production_Employee = [P for P in EmployeeID if P.startswith('OB')]

# ['OB94382', 'OB32308', 'OB83461', 'OB74830', 'OB82345']

-------------------------------------------------------------------------------
# endswith
import os
photo = os.listdir('/Users/jooyoungson/Documents/photo')
png = [png for png in photo if png.endswith('.png')]

#~ .png, ~.png ...

대소문자 관련

  • 텍스트or변수명.upper() : 모든 문자를 대문자로 변환합니다.
  • .lower() : 모든 문자를 소문자로 변환합니다.
  • .capitalize() : 첫 글자만 대문자로 변환합니다.
  • isupper() : 문자열이 모두 대문자로만 되어 있으면 True, 그렇지 않으면 False를 반환
  • islower() : 문자열이 모두 소문자로만 되어 있으면 True, 그렇지 않으면 False를 반환
  • istitle(): 문자열의 첫 글자만 대문자로 되어 있으면 True, 그렇지 않으면 False를 반환
  • isalpha(): 문자열이 모두 알파벳 문자로만 되어 있으면 True, 그렇지 않으면 False를 반환
  • isalnum(): 문자열이 모두 알파벳 문자 숫자로만 되어 있으면 True, 그렇지 않으면 False를 반환
  • isdecimal(): 문자열이 모두 숫자로만 되어 있으면 True, 그렇지 않으면 False를 반환

합치기, 나누기

  • "구분자".join(합칠문자나변수) : 구분자 넣고 문자들 다 합침 >> str으로 출력
  • 합칠문자나변수.split('구분자') : 구분자 기준으로 문자들 다 나눔 >> list로 출력  
#- join()
stages = ['fundamentals', 'exploration', 'goingdeeper']
",".join(stages)
#'fundamentals,exploration,goingdeeper'
----------------------
#- split()
'fundamentals,exploration,goingdeeper'.split(',')
#['fundamentals', 'exploration', 'goingdeeper']

기타

  • strip() :공백 문자를 처리
  • replace() : replace(s1, s2) , 문자 s1을 s2로 바꿈
 
 
txt = "      Strip white spaces.      "
print('[{}]'.format(txt))
print('--------------------------')

#- 양쪽 공백 제거 : strip()
print('[{}]'.format(txt.strip()))
print('--------------------------')

#- 왼쪽 공백 제거 : lstrip()
print('[{}]'.format(txt.lstrip()))
print('--------------------------')

#- 오른쪽 공백 제거 : rstrip()
print('[{}]'.format(txt.rstrip()))
------------------------------------------------------------------
[      Strip white spaces.      ]
--------------------------
[Strip white spaces.]
--------------------------
[Strip white spaces.      ]
--------------------------
[      Strip white spaces.]
=====================================================================
sent = 'I can do it!'
sent.replace('I', 'You')
>>>'You can do it!'

가변객체와 불변객체

  • 가변 객체(mutable object)
    • list, set, dict
    • 객체 생성 후 수정 가능. 수정된 객체 == 변수의 값
    • id가 동일
  • 불변 객체(immutable object)
    • int, float, complex, bool, string, tuple, frozen set
    • 객체 생성 후 수정 불가. 변수자체가 해당 값과 다른 객체
    • id 가 바뀜

https://webnautes.tistory.com/1181

 

Python 개념 정리 - 객체란 ( mutable vs immutable )

본 포스팅에서는 파이썬의 mutable 객체와 immutable 객체에 대해 is 연산자, id 함수, == 연산자를 중심으로 설명하고 있습니다. 2018. 5. 10 - 최초작성 2018. 7. 19 파이썬에서 모든 것은 객체(object)입니다.

webnautes.tistory.com

re, compile (정규표현식)

Aiffel lms

How to use

  • import re 를 통해 정규식 모듈을 가져옵니다.
  • re.compile() 함수로 Regex 객체를 만듭니다.
  • 검색할 문자열을 Regex 객체의 search() , findall() 메소드로 전달합니다.

Method

  • search() : 일치하는 패턴 찾기 (일치 패턴이 있으면 MatchObject를 반환합니다) >> re.search('you',wind)
  • match() : search()와 비슷하지만, 처음부터 패턴이 검색 대상과 일치해야 합니다.
  • findall() : 일치하는 모든 패턴 찾기 (모든 일치 패턴을 리스트에 담아서 반환합니다) >> re.findall('you',wind)
  • split() : 패턴으로 나누기
  • sub() : 일치하는 패턴으로 대체하기
  • group() : 실제 결과에 해당하는 문자열을 반환합니다.

특수문자, 메타문자

  • [ ] : 문자
  • - : 범위
  • . : 하나의 문자
  • ? : 0회 또는 1회 반복
  • * : 0회 이상 반복
  • + : 1회 이상 반복
  • {m, n} : m ~ n
  • \d : 숫자, [0-9]와 동일
  • \D : 비 숫자, [^0-9]와 동일
  • \w : 알파벳 문자 + 숫자 + _, [a-zA-Z0-9_]와 동일
  • \W : 비 알파벳 문자 + 비숫자, [^a-zA-Z0-9_]와 동일
  • \s : 공백 문자, [ \t\n\r\f\v]와 동일
  • \S : 비 공백 문자, [^ \t\n\r\f\v]와 동일
  • \b : 단어 경계
  • \B : 비 단어 경계
  • \t : 가로 탭(tab)
  • \v : 세로 탭(vertical tab)
  • \f : 폼 피드
  • \n : 라인 피드(개행문자)
  • \r : 캐리지 리턴(원시 문자열)
    • 연도 : pattern = re.compile("[1-2]\d\d\d") >> 1부터2까지의 숫자, 뒤에도 숫자 3개
    • 전화번호 : r'\d\d\d-\d\d\d-\d\d\d\d' /// r'\d{3}-\d{3}-\d{4} /// r'(\d{3}-){2}\d{4}'
    • 이메일 : "[0-9a-zA-Z]+@[0-9a-z]+\.[0-9a-z]+"

https://gooopy.tistory.com/139

 

Python-기초:3.1. 정규 표현식(2) - Python re 모듈

이전 포스트에서 정규 표현식이 무엇인지, 메타 문자가 무엇인지에 대해 가볍게 알아보았다. 앞서 학습한 메타 문자를 예제를 기반으로 제대로 다뤄보려면, 자신이 만든 정규 표현식 패턴이 제

gooopy.tistory.com

https://wormwlrm.github.io/2020/07/19/Regular-Expressions-Tutorial.html

 

정규표현식 완전정복 - 재그지그의 개발 블로그

JavaScript를 활용하여 정규표현식의 기초부터 심화까지의 개념을 짚어봅니다.

wormwlrm.github.io

 

728x90

'Study (Data Science) > ML' 카테고리의 다른 글

상관계수, 경사하강법, 손실함수, RMSE, 경사하강법, 선형회귀  (0) 2022.12.09
CSV, XML, JSON  (0) 2022.12.08
Matplotlib, Seaborn  (0) 2022.12.07
Scikit-Learn  (0) 2022.12.07
알고리즘 선택하기  (0) 2022.12.07

댓글