딕셔너리 컨프리핸션파이썬은 코드의 간결함이 가장 큰 장점이요. 이전 포스팅에서 컴프리핸션(list comprehension) 작성요령만 써놨는데 이번 포스팅에서는 딕셔너리 컴프리핸션에 대해 더 써볼까 합니다.기본 문법딕셔너리 컴프리핸션은 한 줄의 코드로 for문이 딕셔너리 안에서 작동할 수 있게 해주는 문법입니다. 기본적인 문법은 다음과 같습니다.{키_표현식: 값_표현식 for 요소 in 반복 가능 객체 if 조건식}키_표현식 : 딕셔너리의 키로 사용할 값.값 표현식 : 딕셔너리의 값으로 사용할 값.반복 가능 객체 : 리스트, 튜플, 문자열, 또는 range와 같은 반복 가능한 객체조건식(선택) : 특정 조건을 만족하는 경우에만 요소 포함.딕셔너리 컴프리핸션의 장점가독성 향상 : 코드가 간결해져 읽기 쉬..
pytesseract 설치 너무 헷갈려pytesseract를 설치하면 다라고 생각하고 진행했다가 방황하시는 분들이라면 이 글 보시고 해결하시기 바랍니다. 혼자 이미지 텍스트 추출 해보겠다고 시도했다가 pytesseract 설치하고 아주 구글링을 엄청 했습니다. gpt에서도 정확하게 나오지가 않아서 애를 많이 먹었습니다.tesseract란?tesseract는 ocr 기반으로 된 이미지 인식 기술입니다. 그림 위에 쓰여진 텍스트를 인식하기 위해 많이 사용합니다. 이미지 텍스트 추출 프로그램이나 서비스를 준비한다면 한번쯤은 써보는 프로그램이 tesseract입니다.파이썬에서 tesseract 사용하기먼저 파이썬에서 제공하는 보통 pytesseract를 설치할겁니다.pip install pytesseract이러..
csv 모듈을 이용한 딕셔너리 csv로 바로 저장하기딕셔너리 자체를 csv로 넘기는 방법입니다. 사실 판다스로 하면 좋은데 그럼 데이터프레임으로 옮기는 작업이 들어가므로 가공이 들어갑니다. 이 부분을 생략하고 csv에 옮기기 위한 방법입니다.골자는 with으로 csv를 열어서 라인별로 쓰는 방식입니다.values 값이 한개로 되어 있는 경우value의 타입에 따라 약간 달라지는데 문자열이나 숫자인 경우는 writerow를 이용합니다.alphabet_count_dict = { 'a': 0, 'b': 0, 'c': 0, 'd': 0, 'e': 0, 'f': 0, 'g': 0, 'h': 0, 'i': 0, 'j': 0, 'k': 0, 'l': 0, 'm': 0, 'n': 0, 'o': 0, 'p': 0, 'q..
리스트에서 특정 문자열 제거하기리스트에서 특정 문자열 제거하는 방법입니다.리스트는 remove를 사용해서 원소를 제거합니다. 굉장히 쉽죠.그런데 특정 조건에 맞는 원소만 제거하려면 해당 원소를 찾아주어야 합니다.이 부분이 살짝 어려울 수 있는데 생각을 '해당 원소를 찾는다'와 '해당 원소만 제외하고 다시 만든다' 두가지로 생각하면 접근하기 쉬워집니다.해당 원소만 제외하고 다시 만든다해당 원소를 제외하는 방법입니다. 원래 있던 리스트에서 특정 원소를 제외하고 새로운 리스트를 만들어 줍니다.리스트 컴프리헨션 활용리스트 컴프리헨션을 활용해 apple 아닌 원소만 가져옵니다.my_list = ['apple', 'banana', 'orange', 'apple', 'grape']filtered_list = [ite..
파이썬에서의 ~ 연산자 : 비트 반전과 논리 NOT 연산파이썬에서 ~ 연산자는 비트 반전 연산자(bitwise Not operator)로 사용됩니다. 아마 거의 본적이 없는 연산자인데 아무래도 비트반전을 시킬일이 거의 없기 때문에 관련 개발을 하지 않는 한 모르는 연산자가 아닐까 싶습니다. 비트반전 연산자의 역할은 간단합니다. 비트가 0이면 1로, 1이면 0으로 바꿔줍니다.비트 반전 연산자 예제비트 단위로 각 비트를 반전시키는 역할을 하는데 아래와 같이 반전됩니다.x = 5y = ~xprint(y) # 출력: -6정수 5(이진수 0000 0101)을 반전시켜 -6(이진수 1111 1010)이 됩니다.판다스에서의 사용~ 연산자는 판다스에서는 논리 NOT 연산자로도 쓰입니다. 특정 조건을 부정하는 필터를 ..
파이썬 리스트 같은 원소값 가져오기파이썬에서 두 개 이상의 리스트에서 공통된 원소값만 추출하는 방법입니다.별 게 아닌데 막상 하면 막막할만해서 정리겸 포스팅합니다.for문 이용가장 쉬운 방법은 for문을 이용하는 방법입니다. 직관적으로 코딩을 만들기 좋습니다.list1 = [1, 2, 3, 4, 5]list2 = [4, 5, 6, 7, 8]common_list = []#for문 이용for i in list1: for j in list2: if i == j: common_list.append(j)# in을 활용for i in list1: if i in list2: common_list.append(i)i를 고정하고 j와 맞춰보고 일치한다면 i를 com..
클래스 연결 메서드 오버라이딩(Method Overriding)은 객체 지향 프로그래밍에서 하위 클래스가 상위 클래스로부터 상속받은 메서드를 재정의하는 개념입니다. 이는 상속 관계에 있는 클래스 간에 동일한 메서드 이름을 사용하면서 각 클래스에서 특정 메서드의 동작을 변경하고자 할 때 사용됩니다. 메서드 오버라이딩의 주요 특징은 다음과 같습니다: 상속 관계 필요: 메서드 오버라이딩은 부모 클래스와 자식 클래스 간의 상속 관계에서만 발생합니다. 메서드 시그니처 동일: 오버라이딩되는 메서드는 메서드 시그니처(이름, 매개변수 형식, 반환 형식)가 부모 클래스의 메서드와 동일해야 합니다. 동적 바인딩: 어떤 메서드가 호출될지는 객체의 실제 타입에 따라 동적으로 결정됩니다. 즉, 실행 시간에 객체의 실제 타입을 ..
딕셔너리 합치기 딕셔너리 합치는 방법입니다. 간단합니다만 딕셔너리 특성상 key 가 같은 경우에는 덮어쓰기가 되니깐 그부분을 잘 조작하면 내가 원하는대로 딕셔너리를 다룰 수 있습니다. 딕셔너리 합치는 방법 2개의 딕셔너리를 합치는 방법은 간단합니다. update()라는 함수를 쓰면 됩니다. test1 = {'A':1,'B':2,'C':3} test2 = {'A':2,'D':4,'E':5} test1.update(test2) print(test1) 3개 이상일 때도 update를 이용해서 반복하면 됩니다. 한꺼번에 하려면 다음과 같이 합니다. dict1 = {'a': 1, 'b': 2} dict2 = {'b': 3, 'c': 4} dict3 = {'d': 5} merged_dict = {**dict1, *..
데이터의 타입을 일일히 확인한다고? 파이썬은 객체니깐 type 함수를 쓰면 언제든지 확인할 수 있습니다. 그런데 데이터가 많으면 일일이 확인할 수 없어서 for문이나 while을 돌리고 있는데 예상치 못한 타입이 나온다면 대처하기가 어렵습니다. 이럴 때 물론 type()을 활용할 수 있지만 루프를 한다면isintance()를 쓰는 걸 추천드립니다. isinstance란? 파이썬은 동적 타이핑(dynamic typing) 언어로, 변수의 타입이 실행 시간(runtime)에 결정됩니다. isinstance 함수는 이러한 특성을 활용하여 객체가 특정 클래스의 인스턴스인지를 동적으로 확인하는 데 사용됩니다. isinstance 함수 개요 isinstance 함수는 객체가 특정 클래스의 인스턴스인지를 확인하는 파..
리스트를 복사하는 이유 파이썬으로 데이터분석에서 가장 중요한게 데이터입니다. 데이터를 보존해놔야 다른 모델을 쓰거나 다른 아이디어를 적용할 수 있기 때문에 반드시 복사를 해놔야합니다. 가끔 리스트로서 데이터를 가지고 있을 때가 있는데 다른것도 마찬가지겠지만 코드 진행을 하다보면 리스트 내용이 바뀌면서(다중 참조) 어그러지기 때문에 원본 구분을 잘 해놓는게 중요합니다. 리스트 복사하기 슬라이싱을 사용한 복사 보통 copy 매쏘드를 쓰는데 슬라이싱을 통해서도 할 수 있습니다. 전체를 슬라이싱하면 복사본으로 인식합니다. original_list = [1,2,3,4,5] copied_list = original_list[:] copy를 이용한 복사 copy 매쏘드를 이용한 방법입니다. 리스트 뒤에 copy()를..
파이썬 대소문자 변경 대소문자 변경하는 방법에 대해 알아보겠습니다. 어째 대소문자는 간단한데 자주 쓰지 않아서 자꾸 까먹게 되는 것 같습니다. 문자열 대문자로 변경 대문자로 변경하려면 upper() 함수를 쓰면 됩니다. 다들 그러는지 모르겠지만 저도 모르게 파라미터 자리에 문자열을 넣어서 오류 한번 나서야 기억이 나는데 대문자로 바꿀 문자열은 upper 앞에 넣어야 합니다. s = 'PipeMime' print(s) print(s.upper()) 숫자가 섞여있어도 알아서 알파벳을 인식해줍니다. s = 'Pipe 123 Mime' print(s) print(s.upper()) 문자열 소문자로 변경 소문자는 lower() 함수를 쓰면 됩니다. 마찬가지로 str.lower()순으로 써줘야 합니다. s = 'P..
현금콤마 표시하기 돈을 숫자로 표지할 때 숫자 3자리(천단위) 마다 콤마를 찍는데요. 콤마로 이 돈이 얼마인지 한눈에 알 수 있도록 해줍니다. 파이썬으로 이런 숫자표기를 하는 방법에 대해 알아볼까 합니다. str.format() 메서드 사용 숫자콤마를 하려면 str.format()에서 format_spec이라는 인자를 쓰면 되는데요. value 값이 자동으로 콤마를 표시해서 나옵니다. formatted_value = format(value, format_spec) value: 콤마를 찍을 숫자입니다. format_spec: value 형태를 변경해주는 기능을 포맷 스펙이라고 합니다. 현재는 콤마를 사용해야 하니 format_spec에 콤마(,) 입력합니다.format_spec에 대한 자세한 내용은 가이드..
문자열 이스케이프 문자열을 다룰 때 특수 문자를 처리하기 위해 이스케이프 문자라는 걸 사용합니다. 특수한 의미를 갖는 문자를 일반 문자처럼 쓰거나 줄바꿈을 하기 위해서 씁니다. 이스케이프의 뜻은 탈출이라는 뜻인데 말 뜻대로 문자열에서 탈출하거나 원래의 쓰임에서 탈출해서 일반 문자가 되는 것을 의미합니다. 주로 쓰는 이스케이프 문자 사실 더 있지만 그나마 사용할만한 것만 소개하겠습니다. 그외의 것은 파이썬 책이나 파이썬 튜토리얼에서 확인하시면 될 것 같습니다. Escape Meaning \\ Backslash(stores one \ ) \' Single quote(stores ') \" Double quot(stores '') \f Formfeed \n Newline(linefeed) \r Carriage..
문자열 패딩 파이썬에서는 f-string이나 문자열 포맷팅으로 변수를 문자열에 삽입할 수 있는데 부등식 기호를 잘 쓰면 패딩 기능이 가능합니다. 즉, 문자열의 최소 길이를 내가 지정할 수도 있고 패딩된 문자열 정렬을 지정할 수 있습니다. 패딩정렬 문자열로써 패딩을 하는 경우 컴퓨터는 부등식을 정렬로 받아들입니다. f-string으로 패딩을 쓰면 다음과 같이 쓰면 됩니다. f"{변수 또는 표현식:패딩정렬}" 각 요소는 다음과 같습니다. 변수 또는 표현식 : 포맷팅하고자 하는 값 또는 표현식 패딩 : 필드의 최소 길이 지정. 길이를 넘지 않는 한도내에서 문자열이 채워집니다. 정렬 : 패딩된 문자열을 어떻게 정렬할지 지정. '' : 오른쪽 정렬 '^': 가운데 정렬 예제를 보면 이해가 되실 겁니다. name ..
파이썬의 강력한 도구 데코레이터 파이썬은 다양한 프로그래밍 기술을 지원하는 다재다능한 언어입니다. 그 중에서도 파이썬의 데코레이터는 코드 재사용과 함수 감싸기를 간편하게 해주는 강력한 도구입니다. 데코레이터란? 데코레이터는 함수나 메서드의 동작을 변경하거나 확장하기 위해 사용되는 파이썬 함수입니다. 데코레이터를 사용하면 함수의 코드를 수정하지 않고도 함수의 동작을 변경할 수 있습니다. 이는 코드의 재사용성을 높이고, 가독성을 향상시키는 데 큰 도움이 됩니다. @ 기호를 사용하여 함수 위에 표시됩니다. def my_decorator(func): def wrapper(): print("Something is happening before the function is called.") func() print(..