푸르미르

[Error]유니코드 인코딩 문제로 인해 json파일이 저장되지 않을 때 본문

AI

[Error]유니코드 인코딩 문제로 인해 json파일이 저장되지 않을 때

((•_•)) 2021. 10. 24. 21:29

 

 

데이터 전처리 과정에서 data를 json형태로 저장하려 했다.

허나 한국어 관련 프로젝트라 그런지 data에 한국어가 포함되어있어 위와같은 오류가 발생한 것으로 보인다.

 

기존 코드는 이런 식이였다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import json
DATA_IN_PATH = '../data/' 
DATA_CONFIGS = 'data_configs.json'
 
data_configs = []
 
data_configs['vocab'= word_vocab
data_configs['vocab_size'= len(word_vocab)+1
 
import os
 
if not os.path.exists(DATA_IN_PATH):
    os.makedirs(DEFAULT_PATH + DATA_IN_PATH)
 
json.dump(data_configs, open(DATA_IN_PATH + DATA_CONFIGS, 'w'), ensure_ascii=False
 
cs

 

위와 같은 오류를 발견한 후 수정한 코드는 아래와 같다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import json
from collections import OrderedDict
DATA_IN_PATH = '../data/' 
DATA_CONFIGS = 'data_configs.json'
 
data_configs = OrderedDict()
 
data_configs['vocab'= word_vocab
data_configs['vocab_size'= len(word_vocab)+1
 
import os
 
if not os.path.exists(DATA_IN_PATH):
    os.makedirs(DEFAULT_PATH + DATA_IN_PATH)
 
np.save(open(DATA_IN_PATH + TEST_LABEL_DATA, 'wb'), test_labels)
 
#json 파일 생성
 
 with open(DATA_IN_PATH + DATA_CONFIGS, 'w', encoding='UTF-8'as f:
     json_data = json.dumps(data_configs)
     json_decode_data = json_data.encode('utf8').decode('unicode-escape')
     f.write(json_decode_data)
    
cs

일단 json형태로 저장하려 했던 대상은 data_configs인데 이것을 OrderedDict형태로 바꿔주어

일반 딕셔너리와 다르게 저장하였고, file을 open하고 write할 때, 22번째 줄을 실행하였다.

이렇게 해야 한글이 깨지지 않고, 저장되는 모습을 확인 할 수 있다.