안녕하세요. 이번 시간에는 파이썬 operator의 itemgetter 함수에 대해 알아봅시다. 먼저, itemgetter 함수는, callable object를 리턴한다고 되어 있어요. 그래서, f = itemgetter(2)를 하면, f(r)을 불렀을 때 r[2]가 리턴된다고 되어 있습니다. 이게 무슨 소리인지 문서에 나와 있는 코드를 보겠습니다. 대충 요런 함수인데요. 일단은 뭔가 리턴하는데 g를 리턴해 버립니다. 그리고 이 g는 obj를 받습니다. 이로 미루어 보았을 때, 함수 itemgetter는 호출 함수인 caller를 리턴하고, 이 caller가 실제로 iterable한 놈을 넘겨받아서 x번째 원소를 리턴하는 일을 수행한다고 봐도 되겠군요. 그러면 이걸 어떻게 바깥에서 쓸까요? 먼저, 2번..
파이썬 검색 결과
요새 이모지를 많이 씁니다. 여기서 질문. 이모지가 있는지 어떻게 검사해야 할까요? 사실 저는 정규 표현식만 있는 줄 알았습니다만, emoji 관련한 패키지가 있어서 그것을 이용해 보기로 했습니다. 먼저 emoji 패키지를 깔아주세요. emoji 1.7.0 기준으로, core의 replace_emoji 한 줄이면 이모지가 제거됩니다. 첫 번째 인자는 string, 2번째 인자는 이모지가 나오면 어떤 것으로 replace를 할 것인가입니다. 저는 빈 문자열로 두었기 때문에, 이모지가 제거됨을 알 수 있어요. 결과를 보면 아래와 같습니다. cho 가가 나오네요. 정규 표현식을 쓰면 몇 줄이 될 것이 단 한 줄에 끝나버리니, 생각보다 괜찮지 않나 싶습니다. 그리고, 내부를 보면, 정규표현식이 아니라, 이모지 ..
파이썬에서 왈러스 연산자는 3.8부터 등장한 기능입니다. 한 마디로 요약하면 대입과 평가를 한번에 할 수 있다는 것입니다. 문서에 나온 예제들이 그리 어렵지 않으니 한 번 쯤 훑어보셔도 괜찮을 듯 싶습니다. 저는 간단하게만 정리하겠습니다. t에 3을 대입한 다음에 이게 0과 같은지 비교해서, 같으면 1을 출력하고 싶습니다. 이런 류의 연산이 생각보다 많이 일어나는데요. 2번째 줄과 같이 if (t = 3) != 0: 이런 식으로 쓸 수도 있다고 생각할 수 있습니다. 사실 저는 그렇게 생각했습니다. 그런데 결과를 보면 invalid syntax라고 뜨네요. 이럴 때 쓸 수 있는 게 왈러스 연산자입니다. 2번째 줄에 보면 (t := 3)이 있습니다. 이것은 변수 t에 3을 대입합니다. 다음에, (t := 3..
os에는 listdir, scandir, walk가 있습니다. 이 중 os.walk는 무엇을 하는 함수일까요? 먼저 제가 탐색할 폴더를 '.'라고 해 보겠습니다. 이 폴더 아래에는 폴더 a, 파일 b, c가 있고, 폴더 a 밑에는 파일 a, b가 있습니다. 이 때, listdir과 scandir은 아래 회색친 부분만 탐색합니다. 1뎁스만 탐색하는 것을 볼 수 있어요. 이에 비해, walk는 . 아래에 있는 모든 파일과 폴더들을 탐색합니다. 단, 아무런 설정을 하지 않으면, 바로가기와 같은 것들은 제외하고 탐색하긴 합니다. 제가 탐색할 폴더 . 밑에 그러한 것이 없다고 가정하면, 회색 부분이 walk가 탐색하는 범위가 됩니다. 그러니, 언제 써야 할 지는 쉽게 알 수 있습니다. 어떤 폴더를 기준으로 재귀적..
이전 글에서 파이썬의 os.listdir을 소개한 적이 있을 겁니다. 다시 복습해 봅시다. 먼저 이 코드는, main.py가 있는 폴더에 있는 파일과 폴더들을 모두 가져옵니다. 단 자신과 상위 폴더는 제외합니다. 해당 폴더에 들어가서 ls -a를 쳐 봅시다. 그러면 이 폴더에 속한 디렉토리와 파일들이 나옵니다. .과 ..을 제외한 갯수를 세면 7개입니다. 프로그램의 실행 결과를 볼까요? 7개로 동일하게 나옵니다. 여기서 문제. 이 리스트에 있는 친구들이 파일인지 폴더인지 알아낼 수 있는 방법이 있을까요? 그렇지 않습니다. 단지, 리스트에 있는 아이템만 보고 알 길이 없습니다. 그렇기 때문에, 따로 아래와 같은 처리를 해 주어야 합니다. os.path.isdir로 따로 처리를 했음을 알 수 있습니다. 이는..
최근댓글