인코딩과 유니코드
- 인코딩 (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 으로 지정해주면 특수기호가 그대로 출력된다.
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
re, compile (정규표현식)
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
https://wormwlrm.github.io/2020/07/19/Regular-Expressions-Tutorial.html
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 |
댓글