MacOs DialogFlow에 Csv 넣기
in Development on Python
GoogleAssistant를 사용하기위해 DialogFlow를 사용하며 겪은 문제중
csv import
에 관한 해결을 적은 글입니다.
MacOS DialogFlow 에 csv 넣기
크롤링까진 무난했다
공공데이터API에서 가져온 식품 DB를 Ruby on Rails로 가져오는 것 까진 좋았는데
Mac에서는 UTF Encoding의 문제로 DB로부터 csv파일을 추출하여 열면 한글이 와장창 깨지게 된다.
Excel 내에서 Encoding을 변경하는 방법도 있을 수 있겠지만 어떻게 하는지 몰라서
Mac에서 csv파일을 열 때 한글 깨짐 오류는 아래의 방법으로 해결했다.
csv파일을
텍스트 편집기
로 연다cmd+shift+s를 눌러 다른 이름으로 저장
UTF-16
방식으로 인코딩설정을 한다.파일 이름을
파일이름.csv
로 저장한다다행히 정상적으로 출력된다!
끝날때까지 끝낸게 아니다.
이 데이터를 그대로 DialogFlow에 Upload Entity로 import하게되면 대충 아래와 같은 문구를 접하게 된다.
그래서 조금더 짱구를 굴려서 Entity를 추가하고 오른쪽 위 ···
버튼을 눌러 Switch to raw mode
에서 데이터를 긁어서 넣어보는 시도를 해보았다.
이번에는 CSV format
이 안 맞다는 아래와 같은 오류가 뜬다.
도대체 그 포맷이 뭘까 생각하여 단순하게 대충 만든 Entity를 csv로 추출하여 보니 " A "," B "
의 구조를 가져야만 했다.
그리고 추가적으로 한 Row는 하나의 Entity이다.
오류 메세지 진짜 엄청 많네
내 데이터의 문제는
- 모든 Row가
""
로 둘러싸여 있지 않다. - 쉼표 뒤에 데이터가 없다 ( 공란으로 Download는 가능하지만 올리는건 안됨 ^^ )
- 아래 경고메시지에 무방비하다; 괄호의 사용 금지
(), {}, [], <>
그래서 데이터 전처리를 위해 새롭게 코드를 짜게된다.
f = open("16extract_name_full_foods_converted.csv", 'r', encoding="utf16", errors='ignore')
o = open("converted_name_foods.csv", 'w')
line = f.read().splitlines()
for i in range(13531):
if line[i][0] != '\"': # 더블쿼트가 없다면 추가!
line[i] = '\"' + line[i] + '\"'
line[i] = line[i] + ", " + line[i] # 콤마와 데이터 복사 붙이기
#괄호를 공백 혹은 제거하기
line[i] = str(line[i]).replace('(', ' ')
line[i] = str(line[i]).replace(')', '')
line[i] = str(line[i]).replace('>', ' ')
line[i] = str(line[i]).replace('<', '')
o.write(line[i]+ '\n')
f.close()
o.close()
이 모든것을 하고나면 데이터는 예쁘게 나오게 된다.
저대로 예쁘게 긁어서 Raw mode에 넣어주면 끗!