본문 바로가기
반응형

PYTHON78

Python - 문자열을 Datetime변환시 TimeZone(strptime unconverted data remains) 해결하기 문자열로 되어 있는 값을 Datetime으로 변환하고자 한다면, 정확하게 각 문자열이 시간데이터 셋과 동일하게 맞추어야 하는데, Timezone을 인식 시키는 방법에 대해서 간단히 알아보고자 한다. 만약 아래와 같이 한국 타임존값이 들어 있는 것의 경우를 가정해 보겠다. '2023-12-18T15:47:56.599821424+09:00' >>> import datetime >>> str_date_time = '2023-12-18T15:47:56.599821424+09:00' >>> convert_datetime = datetime.datetime.strptime(str_date_time, '%Y-%m-%dT%H:%M:%S.%f') Traceback (most recent call last): File ".. 2024. 3. 14.
Python - Microsecond(마이크로초) 단위 문자열 변환하기 가장 기본적으로 많이 사용되는 시간 값은 소수점 6자리로 표현되는 Microsecond(마이크로초) 단위의 시간 값이라고 할 수 있다. from datetime import datetime str_datetime = '2023-12-18T15:47:56.599821' convert_datetime = datetime.strptime(str_datetime, '%Y-%m-%dT%H:%M:%S.%f') datetime.datetime(2023, 12, 18, 15, 47, 56, 599821) 2024. 3. 14.
Python - 타입 비교 type, isinstance 자주 사용하는 건데 자꾸 까먹어서 여기에 기록해 둔다. 현재 type이 리스트인지 확인하는 구분으로 리스트인 경우를 구분해 다른 처리를 진행할 때 사용할 수 있다. type 활용 직관적으로 type 구분을 활용하는 방법이다. >>> a_data = ['a','b'] >>> b_data = 'a,b' >>> if type(a_data) is list: ... print('yes, it is list') ... yes, it is list isinstance 활용 데이터간 비교시 사용하는 내장함수로 타입에도 사용이 가능하다. >>> a_data = ['a','b'] >>> b_data = 'a,b' >>> if isinstance(a_data, list): ... print('yes, it is list').. 2024. 3. 14.
Python - Linting, 소스 분석, 코드 최적화 flake8 최선의 성능과 안정성이 있는 코드는 모든 경고를 제거한 코드라 할 수 있다. 여기에서는 flake8를 통해서 간편하게 코드에서 필요한 수정사항등이 무엇이 있는지 알아보도록 하겠다. VSCode에서 많은 오류와 경고로 코드를 잡아주지만, VScode를 사용할 수 없거나, CI/CD 상황에서 사용할 만한 방법으로 flake8를 사용하면 어떨까 한다. 아래는 간단하게 VSCode 기본 상태에서 flake8를 이용해서 테스트를 한 결과이다. VScode와 다르게 현재 3가지 수정 사항이 있는 것으로 확인된다. flake8 이후 특정 파일이나 디렉토리를 통해서 코드를 분석할 수 있다. PS C:\Users\Han\python\flake8> python3 -m flake8 . .\test.py:4:1: F401 '.. 2024. 3. 14.
Python - HTTPConnectionPool 문제 해결, Max retries Python을 하다보면 가장 많은 오류를 볼 수 있는 부분이 Max retries 오류이다. HTTPConnectionPool(host='localhost', port=8080): Max retries exceeded with url: /xxx (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 61] Connection refused')) 이는 2가지 경우인데 자신의 Connection Pool이 꽉 차서 나타나거나, 반대로 상대방이 요청을 거부하는 경우이다. 보통 HTTPAdapter의 Retry 옵션을 구성해서 사용하는데 세밀하게 설정할 수 있다. Retry 설정 def requests_retry_session(.. 2024. 3. 14.
Python - 동적 리스트(dynamic list) 해결 ValueError: too many values to unpack 아래와 같이 들어오는 값보다 적은 변수를 선언한 경우 ValueError: too many values to unpack (expected 3) 가 발생하는데, 문제는 동적으로 변화하는 리스트인 경우 미리 변수를 선언하기가 어려울 수 있다. 동적 변수 *(아스키 기호) 이경우 쉽게 사용할 수 있는 매직 메소드가 바로 *(아스키 기호)이다. 파이썬은 * 를 통해서 동적으로 변수를 사용할 수 있는데, 선언 시점에 *를 입력하게 되면, 동적으로 동작하여, 부족한 변수만큼 리스트로 값을 받아들이게 된다. 아래와 같이 마지막 변수에, 아스키 기호를 넣어주면 부족한 값을 리스트로 마지막 변수에 넣게 된다. 2024. 3. 14.
Python - Random 정수/소수점/리스트 이해 Random 함수를 통해 숫자 랜덤을 쉽게 구현할 수 있다. 특정 범위 혹은 리스트에서 임의의 값을 선택해야 할 때 유용하므로 자주 사용된다. 여기에서는 가장 많이 사용되는 정수와 소수점, 리스트에 대해 알아보고자 한다. 리스트 - choice >>> import random >>> my_list = ['a', 'b', 'c'] >>> random.choice(my_list) 'c' 정수 - randint >>> import random >>> random.randint(1,10) 10 >>> random.randint(1,10) 5 소수점 - unifrom >>> import random >>> random.uniform(0.2, 0.7) 0.38972597256511843 >>> >>> random... 2024. 3. 14.
Django - django-admin을 찾지 못할때 django 패키지를 설치했는데 django-admin을 찾지 못한다면, path 경로에 문제가 있을 수 있다. 먼저 자신이 설치한 pip 혹은 pip3의 버전 정보를 통해 python이 동작한 디렉토리를 확인한다. pip -version 확인해보면 아래와 같이 현재 동작한 경로 정보를 알 수 있다. 패키지에서 사용하는 파일은 윈도우 기준으로 위 디렉토리 하위에 LocalCache\local-packages\Python버전 명\Scripts 위치한다. 해당 경로로 이동하여 LocalCache 디렉토리가 있는지 확인한후 따라 들어가도록 하자. PS C:\Users\Han\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0> l.. 2024. 3. 14.
Python - Regex 개인정보(주민등록번호,전화번호,휴대폰번호,이메일) 패턴 Python의 정규식 표현을 이용해서 개인정보를 탐지할 수 있는데, 다양한 정보를 비교해본 결과 필자 기준으로 적용한 내용들을 정리해본다. 각 탐지 기준은 한국에 맞도록 구성되어 있음을 미리 밝힌다. 그리고 각 탐지 조건은 아래 사이트에서 테스트가 가능하다. https://regex101.com regex101: build, test, and debug regex Regular expression tester with syntax highlighting, explanation, cheat sheet for PHP/PCRE, Python, GO, JavaScript, Java, C#/.NET, Rust. regex101.com 1. 주민등록번호 주민등록 번호를 탐지하기 위해서는 2가지 정도의 패턴을 고민했.. 2024. 3. 11.
반응형