바이트 문자열을 그대로 바이트배열로 변경하려면? 예를들어 '020b16011710' 문자열이 있다고 해보자. 이걸 \x02\x0b\x10\x01... 이렇게 바꾸고 싶은게 아니라 (hex(16)=\x10), 그대로 \x02\x0b\x16... 로 변경해 무언가 바이트 연산을 하고싶을 때가 있다. 020b16011710 -> \x02\x0b\x10\x01\x11\xa (X) 020b16011710 -> \x02\x0b\x16\x01\x17\x10 (O) 바이트 문자열을 bytearray로 변경한 후 연산 작업 수행하기 그러기 위해선 두글자씩 띄어준 후(이게 한바이트가 되겠지) 이걸 bytearray로 변경해주면 된다. 먼저 for문과 join을 사용해 두글자씩 띄어준다. 그럼 '02 0b 16 01 17 ..
문자열 두 글자씩 띄우기 어떤 값을 얻었는데, 다 붙어있어서 바이트 단위로 끊고 싶을 때가 있다. 꽤나 자주 사용하는 기능인데도 항상 새롭게 구글링을 했었기 때문에 이참에 여기 정리해 놓는다. f = open("C:\\Users\\leefo\\Downloads\\test.txt","r") txt = f.read() f.close() # 리스트 형태로 반환 re = [txt[i:i+2] for i in range(0, len(txt), 2)] print(re) # join 사용 re = ' '.join([txt[i:i+2] for i in range(0, len(txt), 2)]) print(re) f = open("C:\\Users\\leefo\\Downloads\\test_re.txt","w") f.w..
2개의 리스트를 반복문에 같이 돌려?야 할 때 보통 아래와 같은 방법을 사용하곤 했다. 하나의 리스트를 기준으로 반복문을 돌고 다른 하나의 리스트는 인덱스를 사용하는 방법이다. list1=[1,2,3,4,5] list2=[6,7,8,9,10] for i,v in enumerate(list1): print(v,list2[i])1 6 2 7 3 8 4 9 5 10 하지만 zip을 사용하면 좀 더 깔끔하게 다수의 리스트에 대해 동시에 반복문을 돌릴 수 있다. list1=[1,2,3,4,5] list2=[6,7,8,9,10] for v1,v2 in zip(list1,list2): print(v1,v2) 1 6 2 7 3 8 4 9 5 10 이러한 방식을 알았다면 아래와 같은 응용도 가능하다. [1,2,3,4,5..
리스트 ["a","b","a","c","d","e","c","c"]가 있다고 해보자. 각 요소별 갯수를 구해야 할 때, 아래와 같이 딕셔너리에는 키 값이 하나만 존재한다는 특징을 사용해 구할 수 있을 것이다. dict={} test=["a","b","a","c","d","e","c","c"] for v in test: if dict.get(v): dict[v]+=1 else: dict[v]=1 print(dict) {'a': 3, 'b': 2, 'c': 4, 'd': 2, 'e': 2} 위와 같은 방식으로도 구할 수는 있지만 collections 모듈의 Count를 사용하면 손쉽게 구할 수 있다. import collections dict={} test=["a","b","a","c","d","e","c"..
아래와 같은 데이터가 있을 때 특정 열 값을 얻은 후 타입을 리스트로 변경하는 방법을 알아보자. csv 파일 읽기 pandas 모듈을 사용할 것이기 때문에 먼저 pandas를 임포트해준 후 read_csv를 사용해 csv 파일을 읽어준다. read_csv를 사용해 읽는데 names=[]를 사용해 각 열의 이름을 지정해주고 한글 데이터의 경우 그냥 읽으면 깨지기 때문에 encoding='CP949'로 인코딩을 설정해준다. import pandas as pd csv = pd.read_csv('test.csv',\ names=['gu','dong','name','category','microReview','commonAddr','addr'], \ encoding='CP949') 특정 열 값을 리스트로 변경하기..
많은 양의 데이터를 저장하고 있는 csv에서, 특정 값을 행만 선별해 찾고 싶을 때가 있다. 이럴 때, 파이썬 pandas 모듈을 사용하면 특정 값을 가진 행을 손쉽게 얻을 수 있다. 참고로, 파이썬 pasndas는 'pip install pandas'로 쉽게 할 수 있다. 데이터 및 찾을 행 선정 naver_place.csv는 네이버 플레이스의 서울시 음식점 정보가 저장되어 있는 csv이다. 해당 csv 파일에서 구와 동이 '동대문구 회기동'인 행을 찾아보자. cvs 파일 읽기 (read_csv) 특정 값을 가진 행을 찾기 위해 먼저 read_csv를 사용해 csv 파일을 읽어들인다. 각 열(columns)의 이름은 names=[]로 지정해줄 수 있고, 한글 데이터인 경우 인코딩 없이 그냥 읽으면 깨질..
+) 제가 크롤링에 사용한 URL 서비스 자체(store.naver.com)가 중단되고 새롭게 개편된 것으로 확인됩니다. 따라서 아래 코드에 사용된 URL로는 현재 크롤링이 불가하니 JSON 응답값을 주는 사이트의 크롤링 코드 작성 방법, 방식 위주로만 확인 부탁드립니다! 저번 포스팅에서 서울시의 구/동 별로 카테고리를 나누어 크롤링하기 위해 서울시 행정구역 정보를 저장했고, 크롤링 URL을 구성하기 위한 작업을 선행했다. 그리고 해당 URL 요청을 통해 응답을 받았고 응답 코드 500이 나오는 경우에 대한 처리까지 마쳤다. 이번 포스팅에서는 저번 내용에 이어서, 응답으로 받은 값을 파이썬 json 모듈을 사용해 파싱하고 저장하는 코드를 작성해보자. 이전 포스팅에서 내용과 코드가 모두 이어지므로 필요한 ..
+) +) 제가 크롤링에 사용한 URL 서비스 자체(store.naver.com)가 중단되고 새롭게 개편된 것으로 확인됩니다. 따라서 아래 코드에 사용된 URL로는 현재 크롤링이 불가하니 JSON 응답값을 주는 사이트의 크롤링 코드 작성 방법, 방식 위주로만 확인 부탁드립니다! 빅데이터 관련 수업을 들은 적이 있는데 뭔가 데이터 처리를 하기 전에 일단 데이터를 크롤링해와야 했던 과제가 있었다. 네이버 플레이스에서 맛집을 크롤링해보기로 해서 약 12만 건? 정도 크롤링했었다. 이번 포스팅에서는 네이버 플레이스에서 서울시 맛집을 구/동별로 크롤링하는 코드를 소개해보려 한다. 서울시 구/동 정보, 파일에 저장해놓기 서울시의 구/동 정보를 먼저 탐색하는 이유는 두가지이다. 첫 번째는 크롤링할 때, URL 매개변..
파이썬 wordcloud는 중요한 단어나 키워드를 시각화해서 보여주는 시각화 도구이다. wordcloud 자체적으로 빈도수를 계산하는 기능이 있다고 하지만 아무래도 한글의 특성이 있다보니, 나는 한글 명사를 추출하고 빈도수를 계산하는 것까지는 KoNLPy를 사용해주었다. KoNLPy 설치와 KoNLPy를 사용한 한글 명사 빈도수 계산은 아래 포스팅을 참고해주기 바란다. 관련포스팅 KoNLPy (파이썬 한글 형태소 분석기 ) 윈도우 설치 방법 KoNLPy (파이썬 한글 형태소 분석기 ) 윈도우 설치 방법 파이썬 한글 형태소 분석기인 KoNLPy 설치는 아래 기입된 순서대로, 본인 환경(파이썬 버전, 윈도우 비트)에만 맞게 진행해주면 에러가 발생하지 않는다. 참고로 나의 환경은 '파이썬3.8, 윈도우10 x..
KoNLPy 란 아무래도 언어마다 자연어처리를 하기 위한 특성이 제각각이다보니 영어에 맞춰진 자연어처리 도구를 사용하기는 한글에는 맞지 않는다. 그런 이유에서 한글 자연어 처리에 맞춤화된 파이썬 오픈소스 라이브러리인 KoNLPy가 등장했다. 일명 '파이썬 한글 평태소 분석기'이다. 처음엔 당연히 '코엔엘피와이'라고 생각했는데 읽는 방법은 '코엔엘파이'라고 한다. KoNLPy 설치는 pip로 바로 설치되지는 않는다. 그전에 자바 jdk와 Jpype가 설치되어있어야 하는데 자세한 설치 방법은 아래 포스팅을 참고해주기 바란다. 관련포스팅 KoNLPy (파이썬 한글 형태소 분석기 ) 윈도우 설치 방법 KoNLPy (파이썬 한글 형태소 분석기 ) 윈도우 설치 방법 파이썬 한글 형태소 분석기인 KoNLPy 설치는 ..
파이썬 한글 형태소 분석기인 KoNLPy 설치는 아래 기입된 순서대로, 본인 환경(파이썬 버전, 윈도우 비트)에만 맞게 진행해주면 에러가 발생하지 않는다. 참고로 나의 환경은 '파이썬3.8, 윈도우10 x64'이다. 자바 JDK 설치 제일 먼저 아래 오라클 다운로드 페이지에서 자바 JDK를 설치해주어야 한다. https://www.oracle.com/java/technologies/javase-downloads.html Java SE - Downloads | Oracle Technology Network | Oracle Java API Documentation Updater Tool 1.3 Java API Documentation Updater Tool repairs-in-place Java API Do..
뉴스 기사 크롤링 첫번째 - 보안뉴스 뉴스 기사 크롤링, 뉴스 기사 크롤러 만들기 첫번째 대상은 '보안뉴스' 이다. 왜냐면 내가 보안 종사자이기 때문이다. 어쨌든 보안뉴스 #전체기사 부분에서 기사 제목과 본문, 날짜를 원하는 만큼 크롤링해서 txt 파일에 저장해본다. 파이썬 Selenium webdriver를 사용해 크롤링할 것이기 때문에 Selenium 사용법에 대한 설명은 아래 관련포스팅을 참고해주길 바란다. 관련포스팅 [파이썬] 동적 웹 크롤링 (3) - Selenium 사용법 (tag, class, xpath 등) [파이썬] 동적 웹 크롤링 (3) - Selenium 사용법 (tag, class, xpath 등) 아래의 이전 포스팅에서 Selenium 및 브라우저 드라이버 설치, webdriver..