개발일지/빅데이터 댓글 시각화 프로젝트

[Python, MySQL] txt파일 csv파일 변환 및 데이터 가공 (feat. db 연동)

Emil :) 2020. 7. 28. 11:09
728x90
반응형
이 글은 Notion에서 작성 후 재편집한 포스트입니다.

 

개요


한국어 감성사전에 등재되있는 txt파일을 csv 형태로 가공하고, 이를 파이썬을 통해 DB로 연결 후, 삽입해보는 과정을 진행하고자 한다.

진행 과정


1. 번잡한 txt파일을 csv형태로 넣기 쉽게 데이터 가공하기


먼저 기존의 txt파일의 형태를 봐보자, 다음과 같다.

뭐.. 엄청 많지만 윗부분만 따로 떼온것이다. 그런데 우리는 csv파일을 만들어서 db에 넣을것이다. 그게 더 사후관리도 편할것이고, 한눈에 보기도 좋기 때문일것.

문제를 살펴보면 제약 조건은 다음과 같다.

  1. 단어, 어근, 감성이라는 단어는 지워져야 한다.
  2. 중간중간 단어 한 세트간의 공백도 지워져야 한다.
  3. 감성: ~~ 라인엔 마지막에 ,(콤마) 가 붙지 않고, 개행처리를 해줘야한다.

그러니까.. 이런 느낌이다.

공백을 포함한 친구들까지 4개를 한 세트로 둬서, 전역변수로 cnt를 두고 for문을 돌면서 cnt가 4가아니라면 끝에 , 를 붙여주고 cnt가 4가 될때마다 , 를 붙이는 것 대신 개행처리를 해주는 것이다.

코드는 다음과 같다.

import csv

#txt파일을 읽고 txt파일과 csv 파일로 추출할 예정.
openFileTxt = open('emotion_test.txt', 'r')
writeFileTxt = open('emotion_test_write.txt', 'w')
#txt 파일 읽기 쓰기

writeFileCsv = open('output.csv', 'w')
wr = csv.writer(writeFileCsv)

lines = openFileTxt.readlines()

cnt = 1

writeFileTxt.write('word, radix, score')
for line in lines :
    #단어, 어근, 감성 이라는 단어 지워주기
    line = line.replace("단어: ","")
    line = line.replace("어근: ","")
    line = line.replace("감성: ","")
    line = line.strip()


    if(line == ''):
        line += '\n'

    if(cnt % 4 != 0 and line != '\n'):
        line = line + ','
        cnt += 1
        writeFileTxt.write(line)
    else:
        cnt += 1
        writeFileTxt.write(line)



    print(line)
openFileTxt.close()
writeFileTxt.close()

output은 다음과 같다.

txt로 뽑혀져 나오면 이렇고, 이를 csv로 확장자만 바꿔주면..

짜잔! 이렇게 이쁘게 정렬된다. 그럼 이친구를 가지고 이제 DB에 연결해보자.

2. csv파일을 DB에 insert해주기


일단 우리가 사용하는 db의 형태는 다음과 같다.

그럼 일단 이 DB와 연결해야되니까 파이썬에서 코드는 다음과 같이 짜준다.

import pymysql
import cryptography

moamoaDB = pymysql.connect(
    user =  'root',
    passwd = '{비밀번호}',
    host = '127.0.0.1',
    db = 'moamoa',
    charset = 'utf8'
)

cursor = moamoaDB.cursor(pymysql.cursors.DictCursor)
sql = "SELECT * FROM 'tcomment';"
cursor.execute(sql)
result = cursor.fetchall()
print(result)

그런데...

 

그럼 그렇지.. 한번에 제대로 되면 개발하는 맛이안난다 이말임 ㄹㅇㅋㅋ 근데 그것도 적당히 되야지... 저 오류코드로 온갖 구글링 검색을 다 해봐도 해결이안된다...

그래서 고거는... 다음 포스팅에서 다루겠따.. 사실 아직 해결을몬함...

 

결과


 

아직까진 이렇게 csv파일로만 되있따 ㅠ

728x90
반응형