안녕하세요. 이번 시간에는 파이썬의 dictionary에서 key를 remove 하는 방법을 알아보겠습니다. 먼저, dic.pop("1")은 키 "1"을 제거합니다. 1 ~ 5번째 줄에 키 "1", "2", "3"을 넣은 딕셔너리가 선언되었는데요. 이 딕셔너리에서, 키 값 "1"을 가지는 것을 제거하였습니다. 결과는 요래 나옵니다. "1" 이라는 키가 없습니다. 참 쉽죠? 그러면, "5"를 제거하려고 하면 어떨까요? "5"는 키 값에 들어있지 않습니다. 정상적으로 수행이 될까요? KeyError가 떨어집니다. "5"가 없기 때문에 그런 겁니다. 의외로 딕셔너리를 다루다 보면, KeyError를 꽤 많이 보는데요. 원소를 제거할 때, 키가 없으면 어떻게 처리하면 좋을까요? pop 함수의 2번째 인자에 No..
python 검색 결과
python re 모듈에는 finditer와 findall 메소드가 있습니다. 이 둘에 대해 간단하게 알아봅시다. 먼저, 이 둘을 이해하기 위해, capturing group에 대해서 간단하게 설명을 드리겠습니다. ([0-9]+)([^0-9]*)가 있는데요. () 안에 있는 것은 캡쳐가 되는 패턴을 의미합니다. 하나씩 차례대로 해석해 보면, 숫자 문자로만 이루어진 패턴과, 숫자 문자가 아닌 문자로만 이루어진 패턴이거나 빈 문자열이거나, 이렇게 두 개의 패턴으로 캡쳐가 된다는 의미입니다. 예제를 보겠습니다. 먼저, "2345abcde"는 어떻게 캡쳐될까요? 숫자로만 이루어진 패턴이 "2345"이고, 숫자로 이루어지지 않거나 빈 문자열인 패턴이 뒤에 "abcde"라는 패턴으로 들어옵니다. 따라서 요렇게 캡쳐..
이전 글에서 파이썬의 os.listdir을 소개한 적이 있을 겁니다. 다시 복습해 봅시다. 먼저 이 코드는, main.py가 있는 폴더에 있는 파일과 폴더들을 모두 가져옵니다. 단 자신과 상위 폴더는 제외합니다. 해당 폴더에 들어가서 ls -a를 쳐 봅시다. 그러면 이 폴더에 속한 디렉토리와 파일들이 나옵니다. .과 ..을 제외한 갯수를 세면 7개입니다. 프로그램의 실행 결과를 볼까요? 7개로 동일하게 나옵니다. 여기서 문제. 이 리스트에 있는 친구들이 파일인지 폴더인지 알아낼 수 있는 방법이 있을까요? 그렇지 않습니다. 단지, 리스트에 있는 아이템만 보고 알 길이 없습니다. 그렇기 때문에, 따로 아래와 같은 처리를 해 주어야 합니다. os.path.isdir로 따로 처리를 했음을 알 수 있습니다. 이는..
문자열을 처리할 때 regex는 생각보다 많이 쓰게 됩니다. 파이썬에서는 re를 제공하고 있는데요. match와 fullmatch에 대해서 간단하게 알아보겠습니다. 먼저 match를 보도록 하겠습니다. match는 target이 해당 패턴으로 시작하는지를 검사해서, 그렇다면 Match object를 돌려줍니다. 예를 들자면, 패턴 'a'로 시작하는 문자열 'abc'는 참입니다. 그런데 패턴 'b'로 시작하는 문자열 'abc'는 거짓입니다. 따라서, 위 프로그램의 결과는 1번째는 Match 되는 오브젝트가 떨어질 것이고, 2번째는 None이 나올 겁니다. 정말 그런가요? 네. 그래서, 어떠한 문자가 특정한 패턴으로 시작하는지 판단하려면 re의 match를 이용하면 됩니다. fullmatch는 문자열 전체가..
python에서 2개의 set에 대해서 합집합, 교집합, 차집합, 대칭 차집합 등을 구하고 싶을 때가 있습니다. 어떻게 구하면 될까요? 먼저 set A에 속하지만, set B에 속하지 않는 원소들을 모두 구해봅시다. 그러려면 A에서 B를 빼면 됩니다. 3번째 줄에 C = (A - B)라고 했는데요. 이는 A와 B의 차집합을 구하라는 의미입니다. 이는 A에서 A와 B의 교집합을 빼는 것과 같습니다. A와 B의 교집합에 속하는 원소는 2이므로, A에서 원소 2가 빠지면 {1, 4}가 됩니다. 결과는 예상한 대로 나왔음을 알 수 있습니다. 교집합을 구해 봅시다. (A & B)는 set A와 set B의 교집합을 구합니다. A와 B 집합에 동시에 속하는 원소는 2입니다. 따라서 2만 출력됩니다. A 또는 B에 ..
최근댓글