python 281

[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

[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

[boto3] 설치 및 자격 증명 구성

boto3 Python용 AWS SDK EC2, S3와 같은 AWS 서비스 개체를 생성 및 관리할 수 있다. SDK 소프트웨어 개발 키트 (Software Development Kit) 소프트웨어 기술자가 사용하여 특정한 소프트웨어 꾸러미, 소프트웨어 프레임워크, 하드웨어 플랫폼, 컴퓨터 시스템, 게임기, 운영 체제 등을 위한 응용 프로그램 등을 만들 수 있게 해주는 개발 도구의 집합 이 글에서는 리눅스 환경에서 boto3을 설치하고 자격 증명을 구성하는 방법에 대해 정리한다. 설치 요구 조건 : Python 3.6 이상 Python 3.5 이하는 지원이 중단되었다. pip를 통해 설치할 수 있으며, ==, >=, =1.15.0 pip3 install boto3 [매뉴얼] Boto3가 AWS의 자격증명(..

AWS 2022.01.15

[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

[BOJ] 5576 - 콘테스트 / 리스트 컴프리헨션 이차배열

문제 https://www.acmicpc.net/problem/5576 프로그래밍 콘테스트에 W대학과 K대학이 참가한다. 두 대학 모두 10명씩 참가하며, 점수가 가장 높은 3명의 점수를 합해 대학의 점수로 계산한다. W대학의 점수, K대학의 점수를 나타내는 20줄의 입력을 받아 각 대학의 점수를 공백으로 구분하여 출력하는 프로그램을 작성한다. 풀이 1. 각 입력을 10열 2행의 배열로 저장한다. 2. 각 행을 정렬한 뒤 마지막 3개 값을 합한 결과를 출력한다. 소스 코드 import sys s = [[int(sys.stdin.readline()) for _ in range(10)] for _ in range(2)] print(sum(sorted(s[0])[7:]), sum(sorted(s[1])[7:]..