Python 305

[list] 빈 리스트 확인

보통 다른 프로그래밍 언어의 경우 리스트에서 isEmpty() 라는 메서드를 제공하거나, 리스트의 길이를 이용해서 리스트가 비어있는지 확인한다. 파이썬의 경우, 아래와 같이 리스트의 길이를 이용할 수 있다. li = [] if len(li) == 0: print("List li is empty.") else: print("List li is not empty.") 다만 이런 코드는 파이썬답지 않다고 한다. if문 활용 python에서 if으로 리스트를 확인할 때, 리스트가 비어있으면 False를, 비어있지 않으면 True를 반환한다. 따라서 아래와 같은 방식으로 확인하는 것이 조금 더 파이썬다운 코드라고 한다. li = [] if not li: print("List li is empty.") else: ..

Python 2022.03.14

[Python] 한 번에 여러 문자 치환

문자열의 특정 문자 또는 특정 문자열을 치환할 때에는 보통 str.replace 함수를 사용한다. 하지만 여러 문자를 각각 치환하는데 사용하기엔 좋지 않다. 이 경우에는 str.translate 함수를 사용하는 것이 조금 더 적절하다. 사용법 1. 치환 규칙 정의 dictionary 사용 dictionary를 사용하는 경우 ASCII 코드를 사용하여 정의해야 한다. 아래 예시는 각 대문자를 세 자리 뒤의 문자로 치환하는 규칙을 정의한 것이다. rule = {} for i in range(ord('A'), ord('Z') + 1): rule[i] = (i - ord('A') + 3) % 26 + ord('A') print(rule) str.maketrans() 사용 매개변수로 문자열을 받는다. 첫번째 매개..

Python 2022.03.13

[Python] smtplib.SMTPNotSupportedError: STARTTLS extension not supported by server.

현상 Python 코드로 메일을 전송하기 위해 아래와 같은 함수를 선언하여 사용하려고 한다. 메일 전송을 위한 smtp 서버를 선언하고, 로그인 정보를 이용하여 서버에 접근한 뒤 메일 전송까지 완료하는 함수이다. def send(self): recipients_list = self.recipient + self.email_cc server = smtplib.SMTP(self.email_server, self.email_server_port) server.starttls() server.ehlo() server.login(self.sender, self.passwd) server.sendmail(self.sender, recipients_list, self.msg.as_string()) server.qui..

Python 2022.02.27

[logging] Logger/Handler/Formatter

Logging 모듈 Python에서 로그를 출력하기 위한 기본 라이브러리 이 글에서는 Logging 모듈 사용 방법을 간단하게 정리한다. 사용 logging 모듈을 import 한 후, 출력할 로그 메시지를 전달하여 사용할 수 있다. import logging logging.debug("debug message") logging.info("info message") logging.warning("warning message") logging.error("error message") logging.critical("critical message") 아무 처리도 하지 않고 로그 메세지를 출력한 결과는 아래와 같다. 실행 결과 debug, info level에 해당하는 메시지는 출력하지 않았음을 확인할 수 있..

Python 2022.02.26

[Python] Mail CC 추가

2021.06.21 - Python 첨부 파일 메일 전송 Python 첨부 파일 메일 전송 2021.06.20 - Python 텍스트 메일 전송 지난 글에 이어 이 글에서는 첨부파일을 포함한 메일을 전송할 수 있는 코드를 다룬다. 마찬가지로 코드 전체를 복사해서 사용한다면, MAIN 아래의 email_sender부터 passwd.tistory.com Mail 송신 시 참조 수신자를 추가해야 하는 필요성이 생겨서, 위 글 이후로 아주 오랜만에 Mail 관련으로 정리한다. 이전 글의 코드에서 수정한 부분만을 정리해둔다. 방법 1. 참조 수신자 목록을 메세지 헤더에 추가한다. 각 메일 주소는 ,(쉼표)로 구분되어야 한다. 이 글에서는 참조 수신자 목록을 List로 초기화할 것이기 때문에 join 함수를 사용해..

Python 2022.02.18

ImportError: bad magic number in "": b'\x03\xf3\r\n’

python으로 작성한 코드를 실행시키려고 할 때 아래와 같은 메시지가 나오면서 에러가 발생한 적이 있다. Python(CPython)에서 사용하는 바이트 코드(.pyc)에 문제가 있어 발생한 에러이므로, 해당 바이트 코드를 삭제하는 것으로 문제를 해결할 수 있다. 명령어 find . -name "*.pyc" -exec rm -f {} \; # 또는 find . -name \*.pyc -delete 개념적인 내용 위의 에러는 Python 컴파일 과정과 관련이 있는 것 같아 내용을 정리해둔다. CPython Python은 일반적으로 C로 구현되어 있다고 알려져 있는데, 그 구현체를 CPython이라고 한다. 가장 처음으로 만들어진 구현체이며 표준 구현에 해당한다. CPython은 인터프리터이면서 컴파일러로..

Python 2022.02.14

[Python] input VS sys.stdin.readLine

input과 sys.stdin.readLine 간 속도 차이가 나는 이유에 대해 간단히 적어둔다. Python 2.X Python 2에서 사용자 입력을 처리하기 위한 함수는 input과 raw_input이 존재하며, 그 기능은 아래와 같다. input : 입력 받은 값을 evaluate하여 적절한 자료형으로 초기화하여 반환한다. raw_input : 입력 받은 값을 문자열로 반환한다. 따라서 입력 받은 값을 별도 처리하여 저장하는 input 함수가 상대적으로 느리다. 그렇다면 Python 3에서도 동일할까? 그건 아니다. Python 3.X Python 2에서 사용자 입력을 처리하기 위한 함수 중 raw_input은 삭제되었고, input이 raw_input을 대체하게 되었다. 즉, Python 3의 i..

Python 2022.01.23

[Python] find VS index

Python에서 문자열의 특정 문자나 문자열의 위치를 찾을 때 일반적으로 find, index 등의 함수를 사용한다. 이 글에서는 두 함수의 차이점을 정리한다. find 문자열에 매개변수로 받은 문자열의 위치(index)를 확인하여 반환한다. 매개변수로 받은 문자열이 중복하여 위치해도 처음 위치한 자리만을 반환한다. str.find(SEARCHING_STR, [start], [end]) # 예시 print('"ABCDEFGHIJA".find("A") : ', "ABCDEFGHIJA".find("A")) print('"ABCDEFGHIJA".find("A", 2) : ', "ABCDEFGHIJA".find("A", 2)) print('"ABCDEFGHIJA".find("Z") : ', "ABCDEFGHIJ..

Python 2022.01.07

[Python] 대소문자 확인 및 변환

이 글에서는 문자가 대문자인지, 소문자인지 확인하는 함수와 문자열을 대문자 또는 소문자로 변경하는 함수를 정리한다. isupper 문자가 대문자인지 확인한다. str.isupper() # return : bool # 예시 print("A".isupper()) islower 문자가 대문자인지 확인한다. str.islower() # return : bool # 예시 print("A".islower()) upper 문자열을 대문자로 변환하여 반환한다. str.upper() # 예시 print('"AbCdEfGh".upper() :', "AbCdEfGh".upper()) lower 문자열을 소문자로 변환하여 반환한다. str.lower() # 예시 print('"AbCdEfGh".lower() :', "AbCd..

Python 2022.01.05

[Python] ASCII code/문자 변환

ASCII code American Standard Code for Information Interchange, 미국 정보 교환 표준 부호 영문 알파벳을 사용하는 문자 인코딩 7비트 인코딩으로, 33개의 제어 문자와 공백을 비롯한 95개의 출력 가능한 문자로 이루어져 있다. 출력 가능한 문자는 52개의 알파벳 대소문자와 10개의 숫자, 32개의 특수 문자와 공백으로 이루어져 있다. ASCII 코드표 알고리즘 문제 등을 해결하다보면 문자열 범위 지정 등의 문제로 인해 숫자값으로 변환이 필요할 경우가 있다. 이 글에서는 Python에서 문자의 ASCII code 값으로 변환하고, ASCII code 값을 문자로 변환하는 방법을 적어둔다. ord() 특정 한 문자를 ASCII code 값으로 변환하는 내장 함..

Python 2021.12.28