원래 그 문자가 가진 뜻이 아닌 특별한 용도로 사용하는 문자
. ^ $ * + ? { } [ ] \ | ( )
[] : 문자 클래스, [] 사이의 각 문자들과 매치
[0-9] : 숫자모두
[^0-9] : ^는 []안에 들어가면 not이라는 의미를 가짐
[\d] : 숫자와 매치
[\D] : 숫자 아닌 것과 매치
[\s] : whitespace 문자와 매치, \t \n 등
[\S] : whitespace가 아닌것과 매치
[\w] : 문자 + 숫자와 매치
[\W] : 문자 + 숫자가 아닌것과 매치
a.b : 'a' + 모든문자 + 'b'
a[.]b : 'a.b' 와 매치
* : 0회 이상 반복
+ : 1회 이상 반복
{3,5} : 반드시 3회부터 5회까지 반복
{0,} : *과 같음
{1,} : +과 같음
? : 있어도되고 없어도 된다 = {0,1}
import re
re.compile() # 정규표현식을 컴파일, 객체로써 사용가능
re.match() # 문자열의 처음부터 정규식과 매치되는지 조사
re.search() # 문자열 전체를 검색하여 정규식과 매치되는지 조사
re.findall() # 정규식과 매치되는 모든 문자열을 리스트로 돌려줌
re.finditer() # 정규식과 매치되는 모든 문자열을 반복 가능한 객체로 돌려줌, 각 요소는 match 객체
EX
p = re.compile('[a-z]+')
m = p.match("python")
n = p.match("3 python")
m은 match객체를 돌려받고, n은 None을 돌려받음
p = re.compile('[a-z]+')
m = p.search("python")
n = p.search("3 python")
search는 문자열 전체에 대해 매치하기 때문에 m,n 모두 매치됨
group() : 매치된 문자열을 돌려줌
start() : 매체된 문자열의 시작 위치를 돌려줌
end() : 매치된 문자열의 끝 위치를 돌려줌
span() : 매치된 문자열의 (시작, 끝)에 해당하는 튜플을 돌려줌
###"002"
"2".rjust(3, "0") #길이를 3으로 할껀데 0으로 나머지를 채워줄 것이고 오른쪽에 2를 두겠다.
###"50000"
"50000".rjust(5, "0") #길이를 5로 할껀데 이미 5여서 아무것도 안채워짐.
rjust랑 비슷, 무조건 0으로 채움
string.split(" ") # space로 나눠줌
import copy
import copy
list_var = [[1,2],[3,4]]
list_var_deepcopy = copy.deepcopy(list_var)
list_var_copy = list_var.copy()
list_var[1].append(5)
print(list_var) # 원래 변수
print(list_var_deepcopy) # deepcopy : append와 같은 메소드를 써도 값이 변경되지 않음
print(list_var_copy) # copy : 원본이 변경되었으므로 함께 변경됨
append말고 del같은 메서드를 사용하는 경우는 list_var_copy도 함께 변경되지않는데, 이 경우는 파이썬이 리스트 요소를 지우면서 새로운 주소를 할당하는게 아닌가 싶다.
list.remove(value) : 값으로 제거
del(list[index]) : 인덱스로 제거
list.pop() : 마지막 요소 제거
list.sort : 원본 리스트 정렬, 반환값 없음
sorted(list) : 정렬된 리스트를 반환
sorted(l, key=itemgetter(0,1,2)) : itemgetter에 작성된 인덱스 순으로 정렬
dic.get(x, '디폴트 값') : x의 value값을 반환, 없으면 디폴트 출력
filter() : 특정 조건으로 걸러서 걸러진 요소들로 iterator객체를 만들어서 리턴
# 리스트 생성
fellowship = ['frodo', 'samwise', 'merry', 'pippin', 'aragorn', 'boromir', 'legolas', 'gimli', 'gandalf']
# 람다함수적용
result = filter(lambda member: len(member) > 6, fellowship)
# 리스트형태로 변환
result_list = list(result)
# 결과출력
print(result_list)
# functools 모듈 사용
from functools import reduce
# 리스트 생성
stark = ['robb', 'sansa', 'arya', 'brandon', 'rickon']
# 람다함수적용
result = reduce(lambda item1, item2: item1+item2, stark)
# 결과출력
print(result)
집계 함수는 두개의 인자를 받는데, 첫번째 인자는 누적자(accumulator), 두번째 인자는 현재값(current value)가 넘어오게 된다.