요새 이모지를 많이 씁니다. 여기서 질문. 이모지가 있는지 어떻게 검사해야 할까요? 사실 저는 정규 표현식만 있는 줄 알았습니다만, emoji 관련한 패키지가 있어서 그것을 이용해 보기로 했습니다. 먼저 emoji 패키지를 깔아주세요. emoji 1.7.0 기준으로, core의 replace_emoji 한 줄이면 이모지가 제거됩니다. 첫 번째 인자는 string, 2번째 인자는 이모지가 나오면 어떤 것으로 replace를 할 것인가입니다. 저는 빈 문자열로 두었기 때문에, 이모지가 제거됨을 알 수 있어요. 결과를 보면 아래와 같습니다. cho 가가 나오네요. 정규 표현식을 쓰면 몇 줄이 될 것이 단 한 줄에 끝나버리니, 생각보다 괜찮지 않나 싶습니다. 그리고, 내부를 보면, 정규표현식이 아니라, 이모지 ..
레퍼런스 검색 결과
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로 따로 처리를 했음을 알 수 있습니다. 이는..
os.path의 splitext 함수는 확장자를 검사하기 위해 쓰이는 함수입니다. 문서에 있는 표현을 잠시 빌리면, root하고 ext를 나눠버리기 위해서 쓰는데요. 예를 들어, a.jpg는 a와 .jpg로 분리할 수 있습니다. 뒤에 .jpg가 확장자이기 때문입니다. 예제를 보면서 알아 봅시다. 먼저, 'a/b/c'는 root로만 이루어져 있고, 확장자 정보는 없습니다. 따라서, root는 'a/b/c', ext는 ''로 나오게 됩니다. 정말 그렇게 나오는지는 결과를 확인해 보면 됩니다. 네. 정말 그렇게 나오네요. 이제, 'a/b/c.png'는 어떻게 나올까요? 확장자가 .png임은 한눈에 알 수 있습니다. 결과는 위와 같이 나옵니다. 확장자 부분을 뺀 나머지가 root가 됨을 알 수 있습니다. 이제 ..
문자열을 처리할 때 regex는 생각보다 많이 쓰게 됩니다. 파이썬에서는 re를 제공하고 있는데요. match와 fullmatch에 대해서 간단하게 알아보겠습니다. 먼저 match를 보도록 하겠습니다. match는 target이 해당 패턴으로 시작하는지를 검사해서, 그렇다면 Match object를 돌려줍니다. 예를 들자면, 패턴 'a'로 시작하는 문자열 'abc'는 참입니다. 그런데 패턴 'b'로 시작하는 문자열 'abc'는 거짓입니다. 따라서, 위 프로그램의 결과는 1번째는 Match 되는 오브젝트가 떨어질 것이고, 2번째는 None이 나올 겁니다. 정말 그런가요? 네. 그래서, 어떠한 문자가 특정한 패턴으로 시작하는지 판단하려면 re의 match를 이용하면 됩니다. fullmatch는 문자열 전체가..
최근댓글