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

0%

Regular Expression


정규표현식이란?

특정 문자열이 주어진 표현식과 매치가 되는지 확인해 줍니다.

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


정규 표현식을 사용하면, 정규 표현식에 쓰여진 문자나 패턴이 검색할 문자열 안에 있는지 없는지 확인 할수 있습니다.


re 내장 모듈


정규 표현식을 사용하기 위해서는, re 라는 내장 모듈을 불러와주고, 사용해주면 됩니다.


1
import re

re 모듈의 함수들을 정리하면 아래와 같습니다.


함수 동작 함수동작
re.findall 지정된 문자열과 매칭되는 부분을 리스트로 반환합니다
re.search 문자열 안에 매치가 있으면, 메치 객체를 반환합니다
re.split 각 매치에서 일치할때마다 분열된 문자열 리스트를 반환합니다
re.sub 문자열과 매치되는 하나 혹은 여러개의 것들을 교체 합니다

정규 표현식은 아무리 여러번 봐도, 쉽게 머리에 들어오지 않고. 매번 까먹기만 하기 때문에.


특별히 더더더욱이 많은 공부를 해야하는것 같습니다. W3School 예시를 따라하면서 정리합니다.


Metacharacters (특수문자)


문자 비고 예시
[] 문자의 집합 “[a-m]”
\ 특정 순서를 표시 “\d”
. 새줄의 문자를 제외한, 아무 문자 ‘he..o”
^ 으로 시작 “^hello”
$ 으로 끝 “world$”
* 0번 혹은 그 이상 발생 “aix*”
+ 1번 혹은 그 이상 발생 “aix+”
{} 지정된 숫자만큼 발생 “al{2}”
| 양쪽 혹은 “falls|stays”


정규표현식은 매우 중요한 토픽으로, 다음 포스팅부터 예시를 좀 찾아보면서 정리해 보려 합니다.

Python 기초 - break, continue


break 문


break 문은 for 혹은 while 반복문을 빠져나가기 위해 사용됩니다.


break 문의 목적은, 반복문의 실행을 바로 멈추고, 프로그램의 흐름이 반복문 이후로 넘어가게 하는것입니다.


for 반복문 혹은 while 반복문 안에서,

break 코드를 만나면, 해당 반복문은 바로 종료가 됩니다.


for 반복문에서 break 의 예시


1
2
3
4
5
6
7
8
9
10
11
# for loop 안의 break 문 
numbers = (1, 2, 3, 4, 5, 6, 7, 8, 9)
num_sum = 0
count = 0
for x in numbers:
num_sum = num_sum + x
count = count + 1
if count == 5:
break

print('처음 {}번째 숫자의 합계는, {} 입니다.'.format(count, num_sum))

while 반복문에서 break 의 예시


1
2
3
4
5
6
7
8
9
# while loop 안의 break 문 
num_sum = 0
count = 0
while(count < 10):
num_sum = num_sum + count
count = count + 1
if count == 5:
break
print('처음 {} 번째 숫자의 합계는 {} 입니다'.format(count, num_sum))

continue 문


continue 문은 while 혹은 for 반복문 안에서, 남아있는 구문들을 실행시키지 않고. 반복문의 위로 올라가게 해줍니다. 예를들면,


1
2
3
4
5
6
7
# continue 문 
for x in range(0, 7):
if (x==3 or x==6):
continue
# x 가 3 혹은 6이면, continue 문 밑에 있는 print(x) 를 실행시키지 않고,
# 넘어가게 된다.
print(x)

Python 기초 - while문


While 반복문


반복문들은 반복적으로 프로그램 구문의 코드 블럭들을 실행 시키기 위해 사용됩니다.


파이썬에서 기본 반복문 구조는 while 반복문 입니다.


아래는 while 문의 문법 구조 입니다.


1
2
3
while (expression):
statement_1
statement_2

위 while 문의 기본 문법에서 보다시피,

while 문은, while(expression): 부분에 expression 이 True 가 되는동안,

statement_1 과 statement_2 를 실행 합니다.


expression 부분이 false 가 되지 않는한, 반복문은 코드 실행을 멈추지 않습니다!

이렇게 실행을 멈추지 않는 반복을 무한 루프라고 부릅니다.


expression 안에 있는 조건은, 각 반복이 시작될때마다 확인이 되고, 이 조건이 False 가 되면, while 반복이 끝나고, 더이상 코드가 실행되지 않습니다.


아래 예시는, x 가 < 5 인 동안에, x 를 출력합니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# x 가 5 보다 작을동안 
# x 를 출력

x = 0
while (x < 5):
print(x)
x = x + 1

# 아래는 아무것도 실행 되지 않습니다.
# 반복문이 시작될때부터, 조건이 False 가 됩니다
# 10 은 5보다 크지 않습니다.

x = 10
while(x < 5):
print(x)
x = x + 1

while 과 else 문


while 과 if 문 사이에는 구조적으로 비슷한점이 존재합니다.


둘다 조건이 true 일때 실행되는 코드 블럭들을 가지고 있고, 차이점이라고 하면, if 문에서는 코드 블럭이 한번만 실행되지만, while 문에 있는 코드 블럭은 반복적으로 실행된다는 차이점이 존재합니다.


문법은 아래와 같습니다.


1
2
3
4
5
6
7
8
while (expression):
statement_1
statement_2
....
else:
statement_3
statement_4
...

while 반복문은 반복적으로 조건을 테스트 하고, 조건이 True 이면, 첫번째 코드 블럭을 조건이 true 인 동안에 반복적으로 실행 시킵니다.


else 밑에 있는 코드블럭들은,

조건이 False 가 될때에만 실행됩니다.


예를들면,


1
2
3
4
5
6
7
8
9
# while... else 

x = 0
s = 0
while (x < 10):
s = s + x
x = x + 1
else:
print("첫번째 9숫자의 합은 : ", s)

if-else, break 와 사용되는 while 반복문의 예시


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# if-else 그리고 break 문을 사용한 while 반복문 
x = 1
s = 0
while (x < 10):
s = s + x
x = x + 1
if (x == 5):
break
else:
print('첫번째 9숫자의 합은 : ', s)
print(' 첫번째 ', x, '의 합은 : ', s)

# 여기서는 else 가 실행되지 않습니다
# while 반복문이, x 값이 5가 될때 종료되었기 때문에,
# while 문에 붙어 있는 else 밑의 코드는 실행되지 않고, while 문을 빠져나갑니다.
# 따라서, while 문 밖에 있는 print 함수가 실행됩니다.

For 반복문


대부분의 다른 프로그래밍 언어들과 비슷하게, 파이썬도 for 반복문을 가지고 있습니다.


하지만, C 혹은, Pascal 같은 언어들과는 조금 차이점이 존재합니다.


파이썬에서 for 반복문은, 리스트, 문자열, 튜플 등과 같이 순서가 있는 자료들의 요소들을 순회할때 사용됩니다.


또한, for 반복문은 range() 내장 함수를 사용하여, 다른 컨테이너로부터 요소들을 접근하기 위해 사용되기도 합니다.


기본 구조는 아래와 같습니다.


1
2
3
4
for 변수명 in sequence형자료: 
statement1
statement2
...

Parameter


Name Description
변수명 for 반복문을 순회할때마다, 새로운값을 가지는 변수명을 가르킵니다
sequence 리스트, 문자열, 튜플 등과 같이 순서가 있는 자료형
statement1 statement2 순회중 각 요소마다, 실행할 코드 블럭들

Example


1
2
3
4
# for 반복문 예시 
color_list = ['Red', 'Blue', 'Green', 'Black']
for c in color_list:
print(c)

위의 예시에서 color_list 는 sequence 형 (즉, 순서가 존재하는, 순회 가능한) 자료로, 몇가지 색깔 이름을 가지고 있는 리스트 입니다.


for 반복문이 실행되면, 아래와 같은 작업을 실행합니다


  1. 첫번째 요소인 ‘Red’ 가 변수명 c 에 할당이 됩니다. 그리고, print(c) 를 실행 하여, ‘Red’를 출력합니다.

  2. 두번째 요소인 ‘Blue’가 변수명 c 에 할당이 됩니다. 그리고 print(c) 를 실행 하여, ‘Blue’ 를 출력합니다.

  3. 세번째 요소인 ‘Green’이 변수명 c 에 할당이 됩니다. 그리고 print(c) 를 실행하여, ‘Green’을 출력합니다.

  4. 네번째 요소인 ‘Black’’이 변수명 c에 할당이 됩니다. 그리고 print(c)를 실행하여, ‘Black’을 출력합니다.


for 반복문과 range() 함수


range() 함수는 연속적인 정수들의 리스트를 반환합니다. range() 함수는, 한개, 두개 혹은 3개의 파라미터를 가지고 있고. 이중 마지막 파라미터 2개는 옵션입니다. for loop 에 꽤나 보편적으로 사용되는 함수 입니다.


예를들면,


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# range(4) 는 0 부터 4 이전의 숫자로 된 리스트를 반환합니다. 
# 따라서, 아래 코드는 for a in [0, 1, 2, 3]: 과 같은 효과를 가집니다.
for a in range(4):
print(a)

for a in [0, 1, 2, 3]:
print(a)


# range 의 시작지점과 끝 지점을 정할수 있습니다
print("range의 시작지점과 끝 지점을 정할수 있습니다")

# 아래 range 는, 2 부터 시작하고, 7의 바로 이전 숫자인 6에서 끝납니다.

for a in range(2, 7):
print(a)

print("파라미터의 마지막값을 지정합니다")

# 기본값으로, 시작지점부터 끝지점까지 1씩 증가하는 요소들을 리스트에 넣어 리스트를 반환하지만,
# 파라미터의 마지막값을 지정하여, 지정한 숫자만큼 증가하는 요소들을 리스트에 넣어 생성할수 있습니다.
for a in range(2, 19, 5):
print(a)


tuple, list, dictionary 순회


for 반복문은 sequence 가 존재하는 자료인, tuple, list, dictionary 들을 순회하여 반복작업을 수행 할수 있습니다.


더 읽어보기 »

Python 기초 - if, elif, else


if, elif, else

if, elif, else 문은 조건적으로 구문 혹은 코드블럭을 실행 시킬때 사용됩니다.

조건들은, True 혹은 False 가 될수 있고, 해당 조건이 True 일때 하나의 코드 블럭을 실행 시킵니다.

조건이 False 라면, 코드 블럭을 실행 시키지 않거나, 다른 코드들을 실행 시킬수 있습니다.


더 읽어보기 »

Python 기초 - 연산자 (Operators)



Operators and Opernands (연산자와 피연산자)


컴퓨터 프로그래밍 언어에서 연산자 (operators) 들은 특별한 기호들로, 계산 조건 매칭 등을 표현합니다.


연산자 (operators) 들이 사용하는 값들은 피연산자 (opernands) 라고 불리웁니다.


c = a + b 에서,

연산자는 +, 피 연산자들은 a 와 b 입니다.


파이썬은 아래 연산자들을 지원합니다.


연산자명 연산
Operators commands 연산자 명령
Arithmetic Operators 산수 연산자
Comparison Operators 비교 연산자
Logical Operators 논리 연산자
Assignment Operators 할당 연산자
Bitwise Operators 비트 단위 연산자

더 읽어보기 »

Python Data Type


데이터 타입


데이터 타입은, 값의 종류를 결정하고, 어떤식으로 값이 사용될지에 대해 결정합니다. 파이썬에 모든 데이터 값들은, 연관되어 있는 객체 클래스로 캡슐화 됩니다.


파이썬 데이터 타입들은, 아래와 같은 종류들이 존재합니다.


데이터 타입 비고
숫자형 (Numbers) 숫자로 생성된 객체로, immutable 합니다. 3가지 수의 타입이 존재합니다. 1. 정수 (integer)2. 실수 (float)3. 복소수 (complex)
불리언 (Boolean) 파이썬에서 가장 간단한 내장 타입으로, True 와 False 를 표현합니다.
문자열 (string) 파이썬에서, 문자열 객체는 왼쪽에서부터 오른쪽으로 방향으로 순서가 있는 객체 입니다. 이를, sequence 라고 표현합니다. 문자열은, ‘ 혹은 “ 으로 감싸지는 데이터 입니다. 문자열은 immutable 합니다
튜플 (Tuples) 튜플은 () 안에 , 로 분리된 값들 입니다튜플은 immutable 하고, 여러 데이터 타입을 가지고 있을수 있습니다.
리스트 (Lists) 리스트는 [] 안에 , 로 분리된 값들 입니다. 아무런 원소도 가지고 있지 않은 리스트를 빈 리스트라고 부릅니다. 리스트는 mutable 합니다
집합 (Sets) 집합은 순서가 없는 고유한 원소들의 집합입니다. 기본 사용은, 교집합, 합집합, 차집합, 합집합 같은 집합 이론을 다루거나, 혹은, 중복된 것들을 없애기 위해 사용할수 있습니다.
사전 (Dictionaries) 파이썬 사전은, 리스트같이 순서가 없는 객체들의 집합의 컨테이너 입니다. 객체는 {} 로 감싸져 있고. key : value 형태로, 한 쌍으로 존재합니다. 각 객체 혹은 값은, key 값으로 접근이 가능하고, key 값들은 사전안에서 고유합니다. key 가 인덱싱을 할때 사용되므로, 이 key 는 immutable 타입이여야 합니다 (문자열, 숫자 혹은 튜플).
None 하나의 값을 가지고 있는 타입으로, 내장 예약어 None 으로 접근이 가능합니다. 값이 없는것을 여러 상황에서 강조하기 위해서 사용됩니다.

지난 포스팅에서는, 문자열까지 알아보았고.


이번 포스팅에서는, 튜플, 리스트, 집합, 사전, None 까지 알아봅니다


더 읽어보기 »

Data Type


데이터 타입

데이터 타입은, 값의 종류와 어떤식으로 값이 사용될지에 대해 결정합니다.

파이썬에 모든 데이터 값들은, 연관되어 있는 객체 클래스로 캡슐화 됩니다.


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

각 객체는 하나의 정체성을 가지고, 하나의 타입을 가지고, 하나의 값을 가집니다.


c++ 나 Java 같은 다른 객체 지향 언어처럼, 파이썬에도 몇가지 데이터 타입이 내장되어 있습니다.

C언어나, Java 로 작성된 확장 모듈을 사용하면, 추가 데이터 타입을 정의할수 있습니다.


파이썬에서 변수의 타입을 정하기 위해서는, type() 함수를 사용할수 있습니다. 객체의 값은 바뀔수도 이습니다.


mutable vs immutable


mutable (가변) 객체

값이 바뀔수 있는 객체들을, mutable (가변) 객체라고 부르고,


immutable (불변) 객체

값이 바뀔수 없는 객체들을 immutable (불가변) 객체라고 부릅니다.



파이썬 데이터 종류


파이썬에는, 아래와 같은 데이터 종류들이 존재합니다.


  1. 숫자형 (Numbers)
  2. 불리언 (Boolean)
  3. 문자열 (string)
  4. 튜플 (Tuple)
  5. 리스트 (List)
  6. 집합 (Sets)
  7. 사전 (Dictionary)
  8. None

더 읽어보기 »

Python - Variables


변수와 값 (Variables and Value)


변수 (Variables) 는,

프로그래머가 값 (Value) 을 저장할수 있는 메모리 공간 입니다.


  • 값은, 문자열 혹은 숫자열 혹은 기타 다른것들이 될수 있습니다 예) “django”, 118, 25.45 etc
  • 변수는 처음 할당 될때 생성됩니다
  • 변수들은 참조되기 전에 할당이 되어 있어야 합니다. 할당 되지 않아 있는 변수를 참조하려 하면, 에러가 납니다
  • 변수안에 저장된 값은, 접근이 가능 하고, 혹은 나중에 업데이트 될수 있습니다
  • 변수의 타입 (즉, 문자열, 정수, 실수 등)들은 파이썬에 의해 지정됩니다
  • 파이썬 인터프리터는 변수의 데이터 타입을 기준으로 메모리를 할당 합니다.

파이썬 변수 이름 규칙


  • 글자 (a-z, A-Z) 혹은 _ 언더스코어 로 시작 할수 있습니다
  • 다른 문자들, 글자, 숫자 혹은 언더스코어가 될수 있습니다
  • 파이썬 변수 이름은, 숫자로 시작하지 않습니다.
  • 대문자 소문자를 구분 합니다
  • 적절한 길이로 이루어질수 있습니다
  • 변수명으로 사용될수 없는, 예약어들이 존재 합니다. 파이썬이 다른것들을 위해서 사용하는 내장 함수나 예약어들은 변수명으로 사용할수 없습니다

예약어의 예시는 아래와 같습니다. 모든 예약어들은 변수명으로 사용될수 없습니다.


False class finally is return
None continue for lambda try
True def from nonlocal while
and del global not with
as el if or yield
assert else import pass
break except in raise


좋은 변수명


프로그래머가 변수명을 잘 짓는 능력은 정말정말 중요합니다. 좋은 변수명을 짓기 위해서 참고할 룰은 몇가지 있지만, 가장 근본적으로 공통된 룰은 아래와 같습니다.


더 읽어보기 »

Python - print()




print 문은 print() 함수로 대체 되었습니다. 키워드 인자들은, 이전 프린트문의 특수 문법들을 대체 합니다.


print문은 아래와 같은 방식으로 사용될수 있습니다.


1
2
3
4
5
6
7
8
9
10
11
print("Good Morning")
print("Good", <문자열을 가지고 있는 변수>)
print("Good", <문자열을 가지고 있는 변수>)
print("Good %s" % <문자열을 가지고 있는 변수> )

# 예)
a = 'abc'
# a 는 abc 라는 문자열을 가지고 있는 변수
print('good', a)
print('good' + a)
print('good %S' % a)

문자열 포매팅


추가적으로 문자열 포매팅이 중요한데. 문자열에 출력될 변수를, %, {} 에 넣어서 출력할수도 있습니다


1
2
3
4
5
text = 'django_bro'

print("Hey! %s", text)
print(f'Hey! {text}')
print('Hey! {}'.format(text))


파이썬에서 문자열은,

외따옴표, 쌍따옴표, 혹은 따옴표 3개로 감싸서 문자열로 사용할수 있습니다.

문자열을 표현하기 위해서 사용되는 따옴표의 종류는 어떤것을 사용해도 상관이 없습니다.


더 읽어보기 »