당신은 멋쟁이, 우리는 장고쟁이~

0%

Python Builins - 3


파이썬 인터프리터는 언제나 사용가능한 몇가지 함수들과 타입들이 내장되어 있습니다.


함수명 내용
min() min() 함수는, 순회가능한 객체의 요소들중에서 가장 작은 값을 찾는데 사용됩니다
next() next() 함수는, iterator 안에서 다음 요소를 얻을때 사용합니다
object() object() 함수는 비어있는 객체를 생성하기 위해 사용됩니다
oct() oct() 함수는 정수를 octal string 으로 전환하기 위해 사용됩니다
ord() ord() 함수는 해당 문자에 해당하는 유니코드를 정수로 얻을때 사용됩니다
pow() pow() 함수는, x의값에 y 제곱을 해줍니다. pow(x, y), y 는 제곱의 숫자 입니다
print() print() 함수는, 객체를 text stream file 로 출력하기 위해 사용합니다
property() property() 함수는 property 속성을 반환합니다
range() range() 함수는 숫자들의 시퀀스를 얻기 위해 사용합니다. 기본값으로 0 부터 시작하고 1씩 증가합니다
repr() repr() 함수는 객체의 출력 가능 형태를 포함하고 있는 문자열을 반환합니다
reversed() reversed() 함수는 reverse 이터레이터를 얻기위해 사용됩니다. 거꾸로된 이터레이터 객체를 반환합니다
round() round() 함수는 반올림한 부동소수점을 반환합니다
set() set() 함수는 집합 객체를 생성하기 위해 사용합니다
setattr() setattr() 함수는 특정 객체의 특정 속성값을 지정하기 위해 사용됩니다
slice() slice() 함수는 지정된 인덱스값을 표현하는 슬라이스 객체를 반환합니다
sorted() sorted() 함수는 순회가능한 객체의 요소들을 정렬하여 새로운 정렬된 리스트로 반환합니다
sum() sum() 함수는 순회가능 객체의 모든 요소들의 합계를 구하는데 사용합니다
tuple() tuple() 함수는 tuple 을 생성하기 위해 사용합니다.
type() type() 함수는 객체의 타입을 얻기 위해 사용합니다
vars() vars() 함수는 주어진 객체의 dict 속성을 얻기 위해 사용됩니다
zip() zip() 함수는 순회가능 객체들을 합쳐줍니다


더 읽어보기 »

Python Builtins - 2


파이썬 인터프리터는 언제나 사용가능한 몇가지 함수들과 타입들이 내장되어 있습니다.


함수명 내용
filter() filter() 함수는 함수가 True 를 반환하는 순회가능 객체의 요소들로부터, 순회가능 객체를 만듭니다.
float() float() 함수는 지정된 값을 부동 소수점 숫자로 전환해줍니다
format() foramt() 함수는 지정된 값을 특정 format 으로 지정할때 사용됩니다.
frozenset() frozenset() 함수는 새로운 frozenset 객체를 반환합니다, 옵션으로 순회가능 객체로부터 요소들을 받아옵니다
getattr() getattr() 함수는 명명된 객체의 속성의 값을 반환합니다, 이름은 문자열이여만 합니다.
globals() globals() 함수는 현재 global symbol table 을 표현하는 딕셔너리를 반환합니다.
hash() hash() 함수는 객체의 hash 값을 반환합니다
help() help() 함수는 내장된 help(도움말) 시스템을 실행시키기 위해 사용됩니다
id() id() 함수는 객체의 정체성을 얻기위해 사용합니다
input() input() 함수는 사용자 입력값을 허용합니다.
int() int() 함수는 지정된 값을 정수로 바꾸어 줍니다
isinstance() isinstance() 함수는 객체 인자가 클래스정보 인자의 인스턴스일때 true 를 반환합니다.혹은, 서브클래스일 경우에 true 를 반환합니다
issubclass() issubclass() 함수는 지정된 객체가, 특정객체의 서브클래스라면 True 를 반환합니다, 그렇지 않으면 False 를 반환합니다.
iter() iter() 함수는 하나의 iterator 객체를 반환합니다
len() len() 함수는, 객체의 길이를 얻을때 사용됩니다
list() list() 함수는, 리스트 객체를 생성하기 위해 사용됩니다
locals() locals() 함수는 local symbol table 을 사전형태로 얻기위해 사용됩니다.
map() map() 함수는 지정된 함수를 순회가능한 객체의 각 요소에 실행시킵니다.
max() max() 함수는 순회가능 객체의 요소들중 가장 큰 값을 찾는데 사용됩니다.
memoryview() memoryview() 함수는 특정객체로부터 메모리뷰 객체를 얻을때 사용됩니다.

더 읽어보기 »

Python Builtins - 1


파이썬 인터프리터는 언제나 사용 가능한 몇가지 함수들과 타입들이 내장되어 있습니다.


함수명 내용
abs() abs() 함수는 주어진 숫자의 절대값을 가지기 위해 사용됩니다
all() all() 함수는 모든 순회가능한 객체의 모든 요소들이 True 인지 False 인지 테스트 합니다
any() any() 함수는, 순회가능한 객체의 어떤 요소라도 True 인지 확인합니다. 순회가능 객체가 비어 있을 경우, False 를 리턴합니다
ascii() ascii() 함수는 객체의 출력가능한 형식을 포함하고 있는 문자열을 반환 합니다
bin() bin() 함수는 정수를 이진수 문자열로 전환해줍니다. 결과값은 유효한 파이썬 수식입니다.
bool() bool() 함수는 하나의 값을 Boolean 으로 전환해줍니다
bytearray() bytearray() 함수는, bytearray 객체를 얻을때 사용합니다
bytes() bytes() 함수는, 새로운 ‘bytes’ 객체를 가질때 사용합니다
callable() callable() 함수는, 객체 인자가 호출 가능한지를 확인합니다. 객체 인자가 호출 가능하면, True, 호출가능하지 않으면, False 를 리턴합니다.
chr() chr() 함수는 유니코드 코드포인트가 정수인 문자를 문자열로 표시해서 반환합니다
classmethod() classmethod() 함수는 하나의 메서드를 클래스 메서드로 전환해 줍니다.
compile() compile() 함수는 소스를 코드로 컴파일 할때 사용됩니다.
complex() complex() 함수는 복소수를 생성하거나, 문자열 혹은 숫자를 복소수로 전환하기 위해 사용됩니다.
delattr() delattr() 함수는 지정된 객체로부터 특정 속성을 지우는데 사용됩니다
dict() dict() 함수는 새로운 사전을 생성할때 사용됩니다
dir() dir() 함수는 지정된 객체의 모든 속성들과 메서드들을 반환합니다. 값이 없더라도, 내장된 함수나 클래스들도 dir()을 사용하면 해당 객체들의 모든 속성과 메서드들을 알아볼수 있습니다.
divmod() divmod() 함수는 복소수가 아닌 두개의 숫자를 인자로 받고, 나누기를 실행할때, 몫과 나머지로 구성된 한쌍의 숫자를 반환합니다
enumerate() enumerate() 함수는 하나의 enumerate 객체를 반환합니다. 순회가능 객체는 반드시 순서가 있는 시퀀스형이여야만 하며, 이터레이터 혹은 이터레이션을 지원하는 어떠한 객체여야만 합니다
eval() eval() 함수는, 지정된 수식을 평가하기 위해 사용됩니다. 만약 수식이 맞는 형식의 파이썬 문이면, 실행이 됩니다
exec() exec() 함수는 지정된 파이썬 코드를 실행 시키기 위해 사용됩니다. 객체는 문자열 혹은 코드 객체로 되어야만 합니다

더 읽어보기 »

Python 클래스 정의


객체 지향 프로그래밍에서 클래스와 객체들은 주요 특징입니다

*객체지향 프로그래밍의 꽃 이라고 할수 있습니다 *


하나의 클래스는 새로운 데이터 타입과 객체들을,

클래스안에 정의된 것들을 따르는 클래스의 인스턴스들로 생성합니다.

새로 생성된 클래스의 인스턴스는, 클래스에 정의되어 있는 속성들을 가지고 있습니다.


클래스안에 있는 문장들은 함수 정의, 데이터, 혹은 다른 기능을 하는 문장이 될수 있습니다.


어떠한 클래스가 정의되었을때, 클래스 내부는 하나의 새로운 namespace(이름공간) 이고, 이는 local scope 로 사용됩니다.


클래스 생성하기


클래스를 생성하는 방법은 간단합니다. class 키워드를 사용하여 정의하고, 클래스 내부의 문장들은 들여스기 해서 생성됩니다. 예를들면,


1
2
3
4
5
6
# 클래스 생성하기 

class Student:
student_class = '1'
student_number = 108801
student_name = 'Djangojeng-e'

위의 예시에서 생성된 클래스는 Student 라는 이름을 가지고, 클래스 내부에 3개의 변수들을 가지고 있습니다.

student_class, student_number 그리고 student_name 입니다.


클래스 객체들


클래스 객체들은 두가지 종류의 동작을 지원합니다.


  1. attribute references (속성 참조)
  2. instantiation (인스턴스화)

속성 참조는, 표준 문법을 사용합니다. 예를들면, objects.name 형태의 문법을 사용하여, object 라는 객체의 name 속성에 접근할수 있습니다.


예시를 들면,


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 클래스에서 attribute reference (속성 참조)

class Student:
name = "Djangojeng-e"
student_class = '1반'
student_number = 306108801

# Student.name 을 사용하여, Student 객체의 name 속성을 접근합니다
print(Student.name)


# Student.student_class 를 사용하여, Student 객체의 student_class 속성을 접근합니다
print(Student.student_class)

# Student.student_number 를 사용하여, student_number 속성을 접근합니다
print(Student.student_number)

__init__ 메서드


파이썬에서는, 특별하게 중요한 파이썬 메서드들이 존재합니다. 클래스는, __init__ 이라고 불리는 특별한 메서드를 정의할수 있습니다.


__init__ 메서드는,

초기화 작업을 해주고, 클래스를 위한 생성자로써 동작 합니다.

다른 함수 혹은 메서드와 비슷하게도, __init__ 도 몇가지 갯수의 인자들을 받을수 있습니다


__init__ 메서드는, 클래스의 객체가 인스턴스화 되자마자 실행되고, 클래스의 인스턴스화는 자동으로 __init__() 을 새롭게 생성되는 클래스 인스턴스를 위해 실행합니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 클래스 인스턴스화 그리고 __init__ 메서드 

# Student 라는 클래스를 정의

class Student:
def __init__(self, name, student_class, student_number):
self.name = name
self.student_class = student_class
self.student_number = student_number

s = Student('Djangojeng-e', '1반', 306108801) # Student 클래스의 인스턴스를 생성

# Student 클래스의 인스턴스인 s 가 실행되자 마자,
# def __init__ 이 실행되어, name, student_class, student_number 값들을 자동으로 할당합니다

# 따라서, 아래와 같이, 인스턴스 생성후에, 해당 인스턴스 속성값으로, 할당된 값들에 접근할수 있습니다

# s.name 을 사용하여, name 에 접근
print(s.name)

# s.student_class 를 사용하여, student_class 접근
print(s.student_class)

# s.student_number 를 사용하여, student_number 를 접근
print(s.student_number)

inheritance (상속)


상속의 개념은, 객체지향 프로그래밍에서 코드의 재사용성에 중요한 영향을 미칩니다.


상속은, 새로운 클래스를 생성할때, 기존에 존재하고 있는 클래스를 기반으로 생성할수 있게 해줍니다.

기존에 존재하고 있는 클래스를 상속받는 새로운 클래스는, 기존 클래스의 모든 속성과 메서드들을 상속 받습니다.


다른 객체 지향 프로그래밍 언어들과 비슷하게도, 파이썬은 부모 클래스와 다른 다수의 클래스들을 상속받는것을 허용합니다. 다중 상속의 개념으로, 단일 상속과 다중 상속의 문법 예시는 아래와 같습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 단일상속, 다중상속 

class BaseClass:
base_class = "기본 클래스"

class OtherClass:
other_class = '다른 클래스'

# 단일 클래스 상속
class SingleInheritance(BaseClass):
pass

single = SingleInhertiance # 단일 클래스 상속 인스턴스 생성
print(single.base_class) # BaseClass 에 있는 변수값을 접근할수 있습니다

# 다수의 클래스를 상속받는 클래스를 생성 (다중상속)

class MultipleInheritance(BaseClass, OtherClass):
pass

multiple = MultipleInheritance # 다중상속 클래스 생성

print(multiple.base_class) # BaseClass 의 base_class 값을 출력합니다
print(multiple.other_class) # OtherClass 의 other_class 값을 출력합니다

클래스 예시


  1. 공장에서, 생산직원과 사무직원들은 모두 공통된 속성들을 가지고 있습니다.

    • 모든 직원들은 - name, designation, age 같은 정보들을 가지고 있습니다

    • 회사직원 (CompanyStaff) 라고 부를수 있는 클래스를 하나 생성할수 있습니다

      CompanyStaff 클래스를 생성해 줍니다.

  2. 이런 공통된 사항들을 떠나서, 생산직과 사무직은 다른 수당 구조를 가지고 있습니다

    • FactoryStaff(생산사원) 은 야근 혹은 추가 근무 수당을 받고

    • OfficeStaff (사무직)은 출장비 수당을 받을수 있습니다

      FactoryStaff 클래스와 OfficeStaff 클래스를 생성해 줍니다.

  3. FactoryStaff 클래스와 OfficeStaff 클래스는, ComapnyStaff 클래스를 상속받을수 있습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 클래스 예시 

class CompanyStaff:
def __init__(self, name, designation, age):
self.name = name
self.designation = designation
self.age = age

def detail(self):
print(f'Name : {self.name} \n Designation : {self.designation} \n Age : {self.age}')


class FactoryStaff(CompanyStaff):
def __init__(self, name, designation, age, overtime_allowance):
CompanyStaff.__init__(self, name, designation, age)
self.overtime_allow = overtime_allowance
CompanyStaff.detail(self)
print('추가 근무 수당 : ', self.overtime_allow)


class OfficeStaff(CompanyStaff):
def __init__(self, name, designation, age, travel_allowance):
CompanyStaff.__init__(self, name, designation, age)
self.travel_allow = travel_allowance
CompanyStaff.detail(self)
print('출장근무 수당 : ', self.travel_allow)

위와 같이 생성된 클래스를 테스트 해봅니다.


1
2
3
4
5
# 생산직원 인스턴스 생성 
FactoryStaff('주호영', '전기공', 39, 20000)

# 사무직원 인스턴스 생성
OfficeStaff('이성경', '마케팅', 30, 50000)

Python Class


소개글


객체 지향 프로그래밍의 기본 아이디어는 데이터와 연관된 순서들 (메서드)을 데이터에 작용하는 하나의 단위로 묶는것입니다. 이 하나로 묶인 단위를 객체라고 부릅니다.


파이썬은 객체 지향 프로그래밍 언어 입니다.

파이썬에 모든것은 객체 입니다,


우리는 이미 몇가지 파이썬 객체들을 가지고 작업한 적이 있습니다.


예를들면,


  • 문자열
  • 리스트

이렇게 파이썬에서 기본으로 제공하는 기능들도 파이썬 객체 입니다.


파이썬에서는, 객체를 선언하고, type() 함수를 사용하여, 객체의 타입을 확인할수 있습니다.



또한, dir() 함수를 사용하여, 해당 객체에서 사용할수 있는 속성들을 확인해 볼수 있습니다.


1
2
3
4
5
6
7
8
9
# 두개의 객체를 생성하고, type 확인 하기 
# type() 함수를 사용하여 확인할수 있습니다.

string1 = "안녕하세요"
print(type(string1))
print(dir(string1))

number_list = [1, 133, 12.5]
print(type(number_list))

파이썬에서는, 파이썬 객체의 속성들을 dir() 을 사용하여 확인 해보고, 사용도 해볼수 있습니다.


아래 예시에서는, lower()upper() 메서드들을 사용해 보았습니다.


1
2
3
4
5
6
7
8
9
10
# dir 로 확인해 보았을때, 
# upper() 와 lower() 메서드가 있는것을 확인할수 있는데
# .upper() 와 .lower() 를 사용하여, 객체를 소문자 대문자를 지정하여 출력할수 있습니다.

string2 = "hello world"
print(type(string2))
print(dir(string2))
print()
print(string2.lower())
print(string2.upper())

클래스에 대해서 더 알아보기 이전에, 아래 사항들을 잘 숙지하고 있어야 이해하기가 쉽습니다.


  • 로컬 변수
  • 글로벌 변수
  • global 문
  • nonlocal 문
  • namespace
  • scope 규칙

Class 를 이해하기 위해 알아야할 사항들


더 읽어보기 »

User defined functions


소개글


모든 프로그램 언어와 스크립트 언어들에서, 함수는 프로그램 문장 블럭으로

프로그램 안에서 반복적으로 사용될수 있는것입니다.


함수는 코드 블럭을 다시 재사용할수 있게 만들어서, 프로그래머들의 시간을 낭비하지 않게 해줍니다


파이썬에서 함수의 개념은 다른 언어들과 동일합니다.

파이썬에는 미리 정의가 되어 있는, built in 함수, 즉 내장되어 있는 함수가 존재하고. 혹은, 사용자가 필요에 의해 정의를 한 사용자 정의 함수가 존재할수 있습니다.


파이썬에서 함수 정의


  1. def로 시작하고, def 다음에 함수이름을 적어주면 선언됩니다
  2. 함수는 def <함수명> () : 형태로, 괄호안에 input 으로 쓰여질 인자들을 정의할수 있고, : 으로 끝납니다
  3. 함수명에 인자를 정의해 주면, 다음줄부터 코드 문장을 쓸수 있고, 이 코드 문장들은 들여쓰기가 되어 있어야 합니다.

간단한 함수를 예로 들어보면, 아래와 같습니다.


1
2
3
4
5
6
7
8
9
# 사용자 정의 함수 
# average_number 는 함수명
# x, y 는 함수에 input 으로 쓰여질 인자들

def average_number(x, y):
print("x 와 y 의 평균은 {} 입니다".format((x + y) / 2))

# 정의된 함수를 호출 x 값엔 4를, y 값에는 6을 넣어줍니다
average_number(4, 6)

함수를 호출하는 방법


다른 프로그래밍 언어들과 비슷하게, 함수를 호출하는 방법은, 함수명을 쓰고 () 안에 파라미터를 넣어주어 호출합니다. 위의 예시에서 average_number(4 ,6) 은 average_number 라는 함수를 호출하고, 파라미터로, 4, 6 을 넣어줍니다


함수 호출 예시


1
2
3
4
5
6
7
8
9
10
11
# 함수 호출 예시 

def print_three_times():
print("이것은 파이썬 기초 입니다")
print("이것은 파이썬 기초 입니다")
print("이것은 파이썬 기초 입니다")

# 위의 정의된 함수를 호출
# 함수는 인자를 가지지 않고, print 문을 3번 실행 합니다

print_three_times()

함수에서 return 문


파이썬에서 return 문은 함수로부터 값을 반환하기 위해 사용됩니다. 수식과 인자가 없이 실행된 함수에 return 문은 None 을 반환합니다.


예를들면,


1
2
3
4
5
6
def nsquare(x, y):
return (x * x + 2*x*y + y*y)

# return 뒤의 수식 의 값을 함수의 값으로 반환합니다

print("2와 3의 합계의 제곱은 : {}".format(nsquare(2, 3)))

기본 인자 값


함수의 파라미터 리스트에서 우리는, 하나 혹은 그 이상의 인자들에 대해 기본값을 지정할수 있습니다.

기본값은, 인자1 = 값 의 형태로 작성될수 있습니다.


우리는 어떤 인자가 기본값을 가지게 될지에 대해서 선택하여 지정할수 있습니다.


예를들면,


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# y 는 2라는 값을 기본값으로 지정됩니다 
def nsquare(x, y = 2):
return (x*x + 2*x*y + y*y)

# y값에 대한 파라미터가 전달되지 않는다 하더라도
# y 는 기본값인 2를 가지고 함수를 실행하고
# 그에 맞는 값을 반환합니다

print("2와 3의 합계의 제곱은 : {}".format(nsquare(2)))

# y 값에 대한 파라미터가 4로 전달이 되면,
# y 는 전달된 4라는 값을 가지고 함수를 실행하고
# 값을 반환합니다

print("2 와 4의 합계의 제곱은 : {}".format(nsquare(2,4)))

키워드 인자


우리는 어떻게 기본 인자값들을 지정하는지 배웠습니다만.

함수는 키워드 인자들을 사용하여 호출될수도 있습니다.


키워드 인자란?

변수명 = 값 형태로 되어 있는 인자들을, 키워드 인자라고 부릅니다.


함수에 전달된 모든 키워드 인자들은, 함수가 받는 인자들중 하나와 꼭 매치가 되어야 합니다.


아래 예시에서, 함수가 호출될때마다, 함수로 전달되는 인자들중 꼭 한가지는 함수가 받는 인자들중 하나와 매치가 됩니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 키워드 인자 

def marks(english, math=85, science=80):
print("Marks in : English is - ", english, "Math -", math, "Science -", science)

# english parameter 는 71의 값을 갖고, math 는 77 그리고 science 는 기본값인 80을 갖습니다
marks(71, 77)

# english parameter 는 65 의 값을 갖고, math 는 기본값인 85, 그리고 science 는 74로 전달 됩니다
marks(65, science=74)

# 순서가 바뀌긴 했지만, 상관없이 정확히 매칭만 된다면,
# english 는 75의 값을, math 는 90의 값을, science 는 70의 값을 갖게 됩니다
marks(science=70, math=90, english=75)

Arbitrary Argument Lists


arbitrary argument, 즉 임의의 인자 리스트는, 인자들을 함수에 전달하는 다른 방법중 하나 입니다.


함수의 body 안에서, 이 인자들은 튜플로 감싸져 있고. 이는 *args 생성자를 사용하여 정의 됩니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# Arbitrary Argument List 

def sum(*numbers):
s = 0
for n in numbers:
s += n
return s

# *numbers 로 임의의 인자가 지정되었기 때문에
# 인자가 몇개가 들어가든 상관 없습니다

print('1부터 4까지의 합은 {}'.format(sum(1,2,3,4)))
print('1부터 10까지의 합은 {}'.format(sum(1,2,3,4,5,6,7,8,9,10)))

# *args 에는 여러 인자들이 들어갈수 있고,
# 함수 내부에는 tuple 로 감싸져서 사용됩니다

def arbitrary_arguments(*args):
print(type(args))

arbitrary_arguments(1,2,3,4)

Lambda 함수


파이썬에서, 작은 익명의 함수들 (이름이 지어지지 않은) lambda 키워드를 생성하여 사용될수 있습니다.


lambda 형태의 함수들은, 다른 함수의 인자로써 사용될수도 있습니다


예를들면,


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# lambda forms 

def average(x, y):
return (x + y) / 2
print(average(4, 3))

# 위 함수를 lambda 를 사용하여 정의해 본다면,
print((lambda x, y: (x+ y)/2)(4, 3))

# 또다른 lambda 의 예시

def multiply_two(x, y):
return x * y

print(multiply_two(5, 5))
# 위 함수를 lambda 를 사용하여 정의하면,
print((lambda x, y: x * y)(5,5))

Python 기초 - Date and Time


날짜와 시간


datetime 모듈은 날짜와 시간들을 간단한 혹은 복잡한 방법으로 다룰수 있게 해주는 클래스들을 제공합니다.


Datetime 모듈은 세가지 기본 객체 타입들을 가지고 있습니다.


1) date

2) time

3) datetime


date


1
2
3
4
5
6
7
8
9
# Date (날짜)를 두룰때 
# datetime.date.today() 오늘 날짜를 갖습니다

import datetime
today = datetime.date.today()
print(f'오늘 날짜는 {today} 입니다')

new_year = datetime.date(2021,1,1)
print(f'올해 신년 날짜는 {new_year} 입니다')


Time


1
2
3
4
5
6
7
8
9
# Time (시간) 을 다룰때
# datetime.time() 은 시간을 갖습니다
import datetime
# time 객체
noon = datetime.time(12, 0, 0)
print(noon)

three_pm = datetime.time(15, 0, 0)
print(three_pm)


datetime


1
2
3
4
5
6
7
8
9
10
11
12
13
14
# time 을 다룰때, date 와 time 둘의 값을 가진 객체를 가질수 있습니다 
# Datetime 객체

import datetime
now = datetime.datetime.now()

print(now)

import datetime

# 특정 datetime

my_birthday = datetime.datetime(2000, 12, 18, 18, 28, 0)
print(my_birthday)

더 읽어보기 »

Regular Expression


findall()


findall() 함수는, 매칭되는 문자열을 포함하고 있는 리스트를 반환합니다.

리스트는 매치가 발견된 순서로 되어 있고, 매치오디는것이 없으면, 비어 있는 리스트가 반환됩니다.


예를들면,


1
2
3
4
5
6
7
8
9
10
11
# finall() 함수 
# 문자열안에 "portugal" 이라는 문자가 있는지 확인 합니다

import re

txt = "The rain in Spain"
x = re.findall("Portugal", txt)
print(x)

x = re.findall("Spain", txt)
print(x)


search() 함수는,

매칭되는 문자열들을 찾고, 매칭이되면 매칭 객체를 반환합니다

매칭되는게 여러개 있을경우, 첫번째 매칭되는것만 반환됩니다.


예를들어,


1
2
3
4
5
6
7
8
9
10
# search() 함수 
# \s 를 사용하여, 문자열 안에 공백을 찾습니다.
# search() 는 match object 를 반환합니다.

import re

txt = "The rain in Spain"
x = re.search("\s", txt)

print("첫번째 공백이 자리하고 있는 위치는..", x.start())

매칭되는게 없으면, None 이 반환됩니다.


1
2
3
4
5
6
7
# search() 매칭되는게 없으면, None 을 반환합니다 

import re

txt = "The rain in Spain"
x = re.search("Portugal", txt)
print(x)

split()


split() 함수는,

매칭이 될때마다 분리된 문자열을 리스트에 담아서 반환합니다.


예를들면,


1
2
3
4
5
6
7
8
# split()
# 문자열은 각 공백마다 분리되어 리스트에 담아줍니다

import re

txt = "The rain in Spain"
x = re.split("\s", txt)
print(x)

maxsplit 파라미터를 사용하여, 몇번이나 일어날지 지정할수 있습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
# split() 파라미터 

import re

txt = "The rain in Spain"
x = re.split("\s", txt, 1)
print(x)

x = re.split("\s", txt, 2)
print(x)

x = re.split("\s", txt, 3)
print(x)

split()


sub() 함수는, 매칭되는것을 선택된 문자로 바꾸어 줍니다


예를들면,


1
2
3
4
5
6
7
8
# sub() 함수 
# 각 빈공간을, 숫자 "9" 으로 바꾸어 줍니다

import re

txt = "The rain in Spain"
x = re.sub("\s", "9", txt)
print(x)

count 파라미터를 사용하여, 몇개를 교체할지에 대해 제어할수 있습니다.


1
2
3
4
5
6
7
8
9
10
11
import re 

txt = "The rain in Spain"
x = re.sub("\s", "9", txt, 1)
print(x)

x = re.sub("\s", "9", txt, 2)
print(x)

x = re.sub("\s", "9", txt, 3)
print(x)

Regular Expression


Sets


set 은 [] 안의 문자의 집합으로, 특별한 의미를 가지고 있습니다.


Set 비고
[arn] a,r,n 중 하나가 문자열안에 있으면, 매치를 리턴 합니다
[a-n] 소문자 a 부터 n 까지 있는 글자들이 매치되면, 매치를 리턴합니다
[^arn] a, r, n 을 제외한 문자들의 매치를 리턴합니다
[0123] 지정된 숫자 0, 1, 2, 3 이 있으면, 매치를 리턴합니다
[0-9] 0 부터 9 사이의 아무 숫자와 매치가 되면, 매치를 리턴합니다
[0-5][0-9] 두자리 숫자 00 부터 59 까지의 숫자와 매치되면, 매치를 리턴합니다
[a-zA-z] 소문자 a 부터 z 까지 혹은 대문자 A 부터 Z 까지의 알파벳과 매치를 리턴합니다
[+] [] 안에서, +, *, ., |, (), $, {} 는 특별한 의미가 없습니다.

예시


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# [arn] 은 a, r 혹은 n 문자가 문자열에 있는지 확인합니다 
import re

txt = "The rain in Spain"
x = re.findall("[arn]", txt)

print(x)

# [a-z] a 부터 z 까지에 있는 문자가 문자열에 있는지 확인 합니다
import re

txt = "The rain in Spain"
x = re.findall("[a-z]", txt)

print(x)

# [^arn] a, r 혹은 n 을 제외한 문자들이 문자열 안에 있는지 확인 합니다
import re

txt = "The rain in Spain"
x = re.findall("[^arn]", txt)

print(x)

# [0123] 지정된 숫자 0, 1, 2, 3 이 문자열에 있는지 확인 합니다
import re

txt = "The rain in Spain"
x = re.findall("[0123]", txt)

print(x)

# [0-9] 문자열이 아무 숫자라도 가지고 있는지 확인 합니다

import re

txt = "8 times before 11:45 AM"
x = re.findall("[0-9]", txt)

print(x)

# [a-zA-Z] 문자열이 소문자 a 부터 z 까지의 소문자와 A 부터 Z 까지의 대문자를 가지고 있는지 확인 합니다

import re

txt = "8 times before 11.45AM"
x = re.findall("[a-zA-Z]", txt)

print(x)

# 문자열이 [+], + 문자를 가지고 있는지 확인 합니다

import re

txt = "8 times before 11.45AM +"
x = re.findall("[+]", txt)

print(x)

Regular Expression


정규표현식은, 긴 텍스트에서 검색할 문자열 혹은 패턴을 나타내는 기호 및 문자입니다.


정규표현식에 지정된 문자열들이 검색할 문자열에서 매치가 되는지 확인이 가능합니다.

이전 포스팅에서, re 모듈은 findall, search, split, sub 같은 함수들을 가지고 있다는것을 알았고, 몇가지 특정 의미를 가진 문자들 metacharacter 에 대해서 알아보았습니다.


*지난 포스팅에 이어서, special sequences 특정 순서에 대해서 알아봅니다. *


Special sequence 는 \ 뒤에 문자 하나를 붙여서 지정합니다.

아래 테이블로 정리 해봅니다.


문자 비고 예시
\A 지정된 문자가, 문자열의 앞에 오면 매치를 반환 합니다. “\AThe”
\b 지정된 문자가, 문자열의 단어의 앞부분 혹은 뒷부분에 있으면, 매치를 반환합니다 r”\bain”r”ain\b”
\B 지정된 문자가 문자열안에 있지만, 단어의 앞부분 혹은 뒷부분에 없을 경우에 매치를 반환합니다. r”\Bain”r”\ain\B”
\d 문자열이 숫자를 포함하면 (0-9) 를 가지고 있으면, 매치를 반환합니다 “\d”
\D 문자열이 숫자를 포함하지 않으면, 매치를 반환 “\D”
\s 문자열이 빈공간을 가지고 있으면, 매치를 반환 “\s”
\S 문자열이 빈공간을 가지고 있지 않으면, 매치를 반환 “\S”
\w 문자열이 아무 문자 (a - Z, 0-9, _)나 가지고 있을경우, 매치를 반환 “\w”
\W 문자열이, 아무 문자(a-Z, 0-9, _)를 가지고 있지 않을 경우, 매치를 반환 “\W”
\Z 문자열의 끝에 지정된 문자가 있으면 매치를 리턴 “Spain\Z”



더 읽어보기 »