python 중국어 인 코딩 과 json 중국어 출력 문제 상세 설명
python 2.x 버 전의 문자 인 코딩 은 때때로 사람 을 골 치 아 프 게 한다.문제 가 발생 하면 인터넷 방법 으로 오 류 를 해결 할 수 있 지만 원리 에 대해 서 는 수박 겉 핥 기 식 이다.본 고 는 주로 python 에서 문자열 처리 의 원 리 를 소개 하고 json 파일 출력 을 추가 로 해결 할 때 유 니 코드 문제 가 아 닌 중국 어 를 보 여 준다.먼저 문자열 인 코딩 의 역 사 를 간략하게 소개 하고,그 다음 에 python 이 문자열 에 대한 처리 와 인 코딩 의 검 측 과 변환 을 설명 하 며,마지막 으로 python 파충류 가 채택 한 json 데이터 가 파일 에 저 장 될 때 중국어 출력 문 제 를 소개 합 니 다.
파 이 썬 인터넷 파충류 입문 부터 실천 까지 by 당 송
python 2 또는 3 에서 문자열 인 코딩 은 두 가지 종류 만 있 습 니 다.
(1)일반적인 유 니 코드 인 코딩;
(2)UTF-8,GBK 와 같은 유 니 코드 를 특정한 유형의 인 코딩 으로 전환 합 니 다.
1.컴퓨터 역사:
컴퓨터 는 숫자 만 처리 하기 때문에 텍스트 를 처리 할 때 반드시 숫자 로 변환 해 야 한다.
8 비트(bit)=1 바이트(byte)=256 가지 다른 상태=000000 에서 111111;
1GB=1024M=1024(1024kb)=1024(1024(1024b));
ASCII 인 코딩 은 영문 문자 와 바 이 너 리 숫자 사이 의 관계 입 니 다.ASCII 는 모두 128 종 을 규정 했다.예 를 들 어 대문자 A 는 65,즉 010000001 이다.알파벳 일자 바이트 보이 기;
GB 2312 인 코딩 간 체 중국어 에서 흔히 볼 수 있 는 인 코딩 은 두 바이트 가 하나의 중국어 한 자 를 대표 하고 이론 적 으로 256*256 개의 인 코딩 을 하면 65536 가지 중문 자 를 나 타 낼 수 있다.
각국 의 인 코딩 이 다 르 기 때문에 각국 이 플랫폼 을 확대 하여 텍스트 의 전환 과 처 리 를 할 수 있 도록 유 니 코드 는 통일 코드 나 단일 코드 로 여 겨 진다.유 니 코드 인 코딩 은 보통 두 바이트 입 니 다.유 니 코드 와 ASCII 인 코딩 의 차 이 는 유 니 코드 가 ASCII 인 코딩 전에 0 을 추가 한 것 입 니 다.즉,알파벳 A 의 ASCII 인 코딩 은 01000001 이 고 유 니 코드 인 코딩 은 0000001000001 입 니 다.그러나 영문 자 모 는 한 바이트 만 사용 하면 충분 하 다.유 니 코드 인 코딩 으로 영 어 를 쓸 때 한 바이트 가 더 많아 져 저장 공간 을 낭비 했다.따라서 유 니 코드 는 유 니 버 설 변환 형식(유 니 코드 Transformation Format(UTF)을 개 발 했 는데 흔히 볼 수 있 는 것 은 utf-8 또는 utf-16 이다.
encode()와 decode()의 차 이 를 알 아야 합 니 다.
encode()는 유 니 코드 인 코딩 문자열 을 다른 인 코딩 형식 으로 변환 하 는 역할 을 합 니 다.
예 를 들 어
st1.encode("utf-8")
이 말 은 유 니 코드 인 코딩 의 st1 을 utf-8 인 코딩 문자열 로 인 코딩 하 는 역할 을 합 니 다.decode()는 다른 인 코딩 형식의 문자열 을 유 니 코드 인 코딩 문자열 로 변환 하 는 역할 을 합 니 다.
예 를 들 어
st2.decode("utf-8")
이 말의 역할 은 utf-8 인 코딩 문자열 st2 를 유 니 코드 인 코딩 문자열 로 디 코딩 하 는 것 입 니 다.둘째,유 니 코드 인 코딩 문자열 을 제외 한 인 코딩 문자열 을 다른 인 코딩 형식 으로 바 꾸 려 면 먼저 디 코딩 한 다음 인 코딩 해 야 합 니 다.
비 유 니 코드 인 코딩-->유 니 코드 인 코딩-->비 유 니 코드 인 코딩
예 를 들 어 utf-8 인 코딩 문자열 st 를 gbk 인 코딩 문자열 로 변환 하려 면 다음 절 차 를 거 쳐 야 합 니 다.
st=st.decode("utf-8") # Unicode
st=st.encode("gbk") # Unicode gbk
셋째,우리 가 자주 사용 하 는 utf-8 인 코딩 은 BOM 이 있 는 것 과 BOM 이 없 는 것 으로 나 뉜 다.넷 째:제 이 슨 파일 에 대한 중국어 인 코딩.Python 으로 JSon 파일 을 읽 을 때 json.load()함 수 를 자주 사용 합 니 다.이 함 수 는 json 파일 의 형식 에 대한 요구 가 있 습 니 다.
1)제 이 슨 파일 은 utf-8 without BOM 인 코딩 으로 제 이 슨 파일 의 내용 을
json.load(filename)
함수 로 직접 읽 을 수 있 습 니 다.2)json 파일 은 utf-8 with BOM 인 코딩 으로
json.load()
함수 로 읽 을 수 없고 json.load()
은 정확하게 식별 할 수 없습니다.3)제 이 슨 파일 시 다른 인 코딩,예 를 들 어 gbk 는 제 이 슨 파일 의 인 코딩 형식 을 하나의 매개 변수 로
json.load()
에 전달 해 야 합 니 다.
eg. json.load(filename,"gbk")
다섯 째,자신의 파일 의 인 코딩 을 어떻게 보고 설정 합 니까?개인 적 으로 좋아 하 는 도구 인'Nodtepad+'를 소개 합 니 다.아무 소프트웨어 관리자 나 원 키 로 설치 합 니 다.
이 도 구 를 사용 하면 파일 의 현재 인 코딩 을 편리 하 게 볼 수 있 고 다른 인 코딩 형식 으로 쉽게 변환 할 수 있 습 니 다.
2,python 문자 인 코딩
참고 주소:https://www.jb51.net/article/139878.htm
(1)encode 의 역할 은 유 니 코드 대상 을 다른 인 코딩 문자열 로 인 코딩 하고 str.encode(utf-8)를 UTF-8 로 인 코딩 하 는 것 입 니 다.(2)decode 는 다른 인 코딩 문자열 을 유 니 코드 인 코딩,str.decode('UTF-8')로 변환 하 는 역할 을 합 니 다.
(2)중국어,Python 의 사전 은 json 파일 에 json 으로 정렬 하여 저장 할 수 있 습 니 다.
with open("anjuke_salehouse.json","w",encoding='utf-8') as f:
json.dump(all_house,f,ensure_ascii=False,sort_keys=True, indent=4);
print(u' ...');
그림 과 같이 데이터 저장:
json_str = json.dumps(all_house,ensure_ascii=False); #all――books 、 python , json
#print json_str; #[{"brokername": " "},{},{}]
new_dict = json.loads(json_str);# json ,
#print new_dict; #{u'house_area': u'95', u'build_year': u'2005'}
json.loads()는 JSON 인 코딩 문자열(사전 형식)을 Python 데이터 구조 로 변환 합 니 다.{u'name':u'xiaoming'}
dumps 전환 후 키 와 값 은 모두 작은 따옴표 가 되 었 고 loads 후 python 변수 가 되 었 을 때 요 소 는 작은 따옴표 가 되 었 으 며 문자열 앞 에 u 를 추가 하 였 습 니 다.
일반적으로 문자열 이 loads 를 통 해 python 데이터 형식 으로 바 뀌 려 면 외부 에 작은 따옴표,안에 있 는 요소 key 와 value 는 작은 따옴표 로 해 야 합 니 다.
dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding='utf-8', default=None, sort_keys=False, **kw);
dump 는 하나의 대상 을 파일 에 직렬 화하 여 저장 합 니 다.dump 는 파일 포인터 와 유사 한 인자(실제 포인터 가 아니 라 클래스 파일 대상 이 라 고 할 수 있 습 니 다)가 필요 합 니 다.즉,dict 를 str 로 변환 하여 파일 에 저장 할 수 있 습 니 다.예 를 들 어 json.dump(all_house,f,ensure_ascii=False,sort_keys=True, indent=4)
의 f 는 데 이 터 를 기록 할 json 파일 핸들 을 표시 합 니 다.dump(obj, fp, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding='utf-8', default=None, sort_keys=False, **kw); dumps(str)
은 str 를 직접 주 었 습 니 다.즉,사전 을 str 로 직접 바 꾸 는 것 입 니 다.파일 을 쓸 필요 가 없습니다.데이터 형식 과 같은 변환 방법 으로 python 문자열 을 json 사전 으로 바 꾸 는 것 입 니 다.dump 와 load 도 비슷 한 기능 으로 파일 작업 과 결합 되 었 습 니 다.
f=open('net_saving_data.txt','w',encoding='utf-8');
for item in all_house:
# house_area=item['house_area'];
# price=item['price'];
output='\t'.join([str(item['house_area']),str(item['price']),str(item['build_year']),str(item['house_title'])]);
f.write(output);
f.write('
');
f.close();
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.