티스토리 뷰


문자열 연산

'NH' + 3 불가

3 + 'NH' 불가

'NH' + str(7) 가능

의미 문자 = 메타 문자 = 특수 문자

  • URL에서 파라미터의 시작을 나타낼 때 → ?
  • 이름과 값을 구분할 때 → =
  • 파라미터와 파라미터를 구분할 때 → &

    http://www.example.com/test.do?name=hong&age=24&...

  • SQL문에서 홑따옴표는 문자열 데이터를 나타낼 때 사용

    select * from members where name = 'hong'

의미 문자에서 의미를 제거하고 문자 그 자체만 사용할(남길) 경우 → 이스케이프

  • 웹 서버로 전달하는 내용이 vendName이라는 파라미터의 값으로 Bandi & Luice 값을 전달해야 하는 경우

    http://www.example.com/test.do?vendName=Bandi & Luice

    위 처럼 보낼 시 Bandi 까지만 인식함

  • 회원 정보 중에서 이름이 "John's Junior"을 조회할 경우

    select * from members where name = 'John's Junior'

    위 처럼 보낼 시 'John'까지만 문자열로 인식하여 Syntax Error가 발생


방법1. 이스케이프를 의미하는 의미 문자를 사용 → \ (역슬래쉬)

select * from members where name = 'John\'s Junior'

방법2. 해당 기능에서 제공하는 일정 규칙에 따라서 문자열을 변경 (데이터를 변형)

인코딩/디코딩

URL 인코딩 & → %26

http://www.example.com/test.do?vendName=Bandi%20%26%20Luice

select * from members where name = 'John''s Junior'

정해진 규칙에 따라 변형

개행 문자

ASCII 코드의 약어 ASCII 코드의 번호 프로그램에서 특수기호

CR(Carriage Return) 0D \r : 커서를 처음으로 이동

LF(Line Feed) 0A \n : 커서를 다음 줄로 이동

booltype

공백,0,None → none

단락 평가

평가를 멈출만한 충분한 정보를 얻으면 아직 평가하지 않은 피연산자가 있어도 바로 멈춤

문자열 비교

ASCII코드 숫자로 비교.

빈 문자열은 항상 모든 문자열의 부분 문자열

( input < 3 ) or ( 100 / input )

( #1 ) | ( #2 ) => #3

( #1 ) || ( #1이 true 이면 생략, 그렇지 않으면 #2 ) => #3(#1이 true이면 true를 반환)

( #1 ) & ( #2 ) => #3

( #1 ) && ( #1이 false 이면 생략, 그렇지 않으면 #2 ) => #3(#1이 false이면 false를 반환)

모듈

처음 import하면 내용이 출력됨

내용 바뀐 모듈을 다시 import하려면

import importlib

importlib.reload(모듈명)을 해주어야한다.

__name__변수

#echo.py

print("__name__ is", __name__)

#echo.py를 실행하면 __name__ 변수에 "__main__"이 값으로 할당

__name__ is __main__

#echo 모듈을 임포트 → __name__ 변수에 모듈명(echo)이 값으로 할당

__name__ is echo

#어떤 모듈에서 호출했는지 알 수 있다.

print("After import, __name__ is", __name__, "and echo.__name__is", echo.__name__) After import, __name__is __main__ and echo.__name__is echo

#임포트 할 때 실행할 코드를 지정.

if __name__ == "__main__":

print("main program.")

else:

print("Another module is importing me")

메서드

밑줄 두개로 시작하고 끝나는 메서드는 파이썬에서 특수하게 간주되며, 특정 문법에 의해서 자동으로 호출

주의

3.__add__(5) 모듈 호출하는것인지 특수 메서드인지 인식불가

3 .__add__(5) 한칸 띄어서 해결

format 출력형식

>>> for noble in nobles:

... print(noble, 'is noble.')

... print('{} is noble.'.format(noble))

... print(f '{noble} is noble.' )

... print('%s is noble.' %noble)

리스트

빈 리스트 참조하면 오류발생!

list[i:j] 인덱스 i부터 인덱스j전까지

[:] 전부다

에일리어싱 : 두 변수의 메모리 주소가 같음

list.copy()메서드는 list객체를 반환(메모리 주소는 다름)

>>> a = [ 0, 1, 2 ]

>>> b = a.copy() ⇐ a 리스트와 동일한 내용을 가지는 (새) 리스트를 반환

>>> a

[0, 1, 2]

>>> b

[0, 1, 2]

>>> a[2] = 9 ⇐ a 리스트의 값을 변경해도

>>> a

[0, 1, 9]

>>> b ⇐ b 리스트에 영향을 미치지 않음

[0, 1, 2]

>>> id(a) ⇐ a와 b가 다른 주소를 가지고 있는 것을 확인할 수 있음

1845602192256

>>> id(b)

1845602101504

b = a 와의 차이점

>>> a = [ 1, 2, 3 ]

>>> b = a ⇐ a와 b가 동일한 리스트의 주소를 공유

>>> id(a)

1845602215360

>>> id(b)

1845602215360

>>> a[2] = 0 ⇐ a 리스트의 값을 변경하면

>>> a

[1, 2, 0]

>>> b ⇐ b 리스트에도 반영

[1, 2, 0]

슬라이싱하면 새로운 리스트가 만들어짐

>>> a = [ 1, 2, 3 ]

>>> b = a[:]

>>> id(a)

1845602101504

>>> id(b)

1845602192256

리스트 메서드 대부분이 None을 반환

루프로 코드 반복

문자열 내 문자 처리

for <variable> in <str>:

문자 하나마다 0,1,2....에 할당

범위 순회

곱셈표 출력

무한루프 차이

>>> time, population, growth_rate = 0, 1000, 0.21

>>> while population != 2000:

... population = population + growth_rate * population

... print(round(population))

~~~~~~~~~~~~~~~~~ ⇒ 정수형 숫자를 반환

실행결과 오류가 나옴

>>> time, population, growth_rate = 0, 1000, 0.21

>>> while population != 2000:

... population = population + growth_rate * population

... print(round(population, 2))

~~~~~~~~~~~~~~~~~~~~ ⇒ 실수형 숫자를 반환

실행결과 무한루프(inf) 나옴

파일 읽기와 쓰기

  • with open

    with open('echo.py', 'r') as file:

    content = file.read()

    0 / 1

    print(content)

    중간에 0 / 1같은 오류가 있더라도

    with open구문을 쓰면 자동으로 close해줌

파일 읽기

  • 읽으면서 커서는 움직이기 때문에 last(끝)까지 커서가 움직였다면 파일을 다시 열어야 한다.
    • 특정 문자 반환 > read()
    • 한줄마다 문자열 형태로 반환 > readline()
    • 전체줄을 문자열 형태로 반환 > readlines()

      strip() 문자열에 포함된 공백문자 (탭, 개행문자, 스페이스 등)를 제거

    나의 파일 읽기

    인터넷상의 파일 읽기

파일 쓰기

  • 쓰기 모드 (write) ⇒ 동일한 파일이 없으면 새로 생성, 있으면 기존 파일을 삭제 후 새로 생성
  • 덧붙이기 모드 (append) ⇒ 기존 파일이 있으면 파일 내용을 추가

with open('./test.txt', 'w') as output_file:

output_file.write('new message')

⇒ test.txt 파일이 생성된 것을 확인

with open('./test.txt', 'w') as output_file:

output_file.write('new message 2')

⇒ test.txt 파일 내용이 새 내용으로 변경된 것을 확인

with open('./test2.txt', 'a') as output_file:

output_file.write('new message')

⇒ test2.txt 파일이 생성된 것을 확인

with open('./test2.txt', 'a') as output_file:

output_file.write('new message 2')

⇒ test2.txt 파일의 기존 내용에 새 내용이 추가된 것을 확인

예제

input_number.txt 파일을 읽어서 output_number.txt 파일을 생성

input_number.txt 파일에는 2개의 실수로 구성된 데이터가 저장

ouput_number.txt 파일에는 2개의 실수와 그 합을 저장

부동소수점 오차가 난다면 import decimal 후, 기존 float를 decimal.Decimal로 바꿔서 해결

IO를 활용한 테스트


'클라우드 보안 융합 전문가 과정 > 파이썬' 카테고리의 다른 글

csv핸들링과 크롤링  (2) 2021.01.08
검색과 정렬  (2) 2021.01.07
모듈화 정규표현식 컬렉션  (2) 2021.01.06
함수  (2) 2021.01.04
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/05   »
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
글 보관함