2017-05-15 4 views
0

:인쇄 특수 문자는 내가 파이썬에서 인코딩을 다루는 문제에 봉착

내가 pandas.read_csv()를 사용하여 열고 CSV에서 일부 문자열을 얻기를, 그들은 그래서 유니 코드 인코딩됩니다 나는, 내가

"Parc d'Activit\xc3\xa9s des Gravanches" 

얻을 UTF-8 내가 그것을 인쇄 할 때, 다음

# data is from my csv 
string = data.encode('utf-8') 
print string 
그러나

일에 인코딩하고 난 반환하려는

"Parc d'Activités des Gravanches" 

그것은 쉬운 문제인 것처럼 보이지만 나는 파이썬에 대해 아주 익숙하고 내 문제에 충분히 근접한 것을 찾지 못했습니다.

참고 : 파이썬 2.7을 사용하고 내 파일

#!/usr/bin/env python2.7 
# coding: utf8 
+0

추가는'# - * - 코딩 : UTF-8은 -'이 아무것도 해결되지 않습니다 코드의 시작과 – Nuageux

+0

@Nuageux을 다시 시도 - - *를 단지 파이썬 방법을 알려줍니다 모듈을 사용하여 문자열 litterals을 처리합니다. –

+0

이미 '# 코딩이 : utf8'를 동일, 내가 함께 노력 STIL 작품 - * -하지만 아무것도 – arnino

답변

0

편집 시작 : 난 그냥 당신이, 파이썬이 사용하고 좋아, 아래의 대답은하지만 여전히 가치가있다 생각 말한다.

파이썬 2에서는 훨씬 더 복잡하고 일관성이 없습니다. 여기에 strunicode이 있고 기본값 인 str은 유니 코드를 지원하지 않습니다.

어쨌든 상황은 다소 차이가 있습니다. 대신 decode을 사용하면 str에서 unicode으로 변환 할 수 있습니다. 그것은 그것을 고쳐야한다. 에

추가 정보 :이 confusion.The 문제의 일반적인 원인이다 https://pythonhosted.org/kitchen/unicode-frustrations.html


는 조금 복잡하지만 나는 그것을 단순화하려고합니다. 여기 파이썬 3에 대해 말하고 있습니다. 파이썬 2와는 몇 가지 차이점이 있다고 생각합니다.

문자열이라고하는 것은 두 가지 유형이 있습니다 : strbytes입니다.

str은 일반적인 문자열 유형 형태의 파이썬이지만 파이썬 3에서는 유니 코드를 완벽하게 지원하지만 실제 데이터를 인코딩하는 방식은 관련이 없습니다.

bytes은 C에서 char*과 같은 바이트 배열입니다. 바이트 시퀀스입니다.

문자열은 양방향으로 표현할 수 있지만 bytes은 바이트 배열을 그대로 사용하기 때문에 해석해야 할 인코딩 표준을 지정해야합니다.

encodestrbytes으로 변환합니다. 이는 실수입니다. 물론 bytes을 인쇄하면 원시 데이터, 일명 UTF-8로 인코딩 된 문자열이 표시됩니다.

decode 당신이 필요로하는 것과 반대되는 작업을 수행합니다.당신 대신 당신이하고있는 의심 바이트 모드 (open(file_name, 'b')에서 보통 (open(file_name, 'r')를) 파일을 열 경우

그러나, 당신은 당신이 그것을 원하는대로 그냥 작동한다 data 인쇄, 아무것도 할 필요가 없습니다 .

는 는 에서

더 많은 정보 : https://docs.python.org/3/howto/unicode.html

+0

전달중인 인수의 이름을 알고 있으므로 문서에서 pandas.read_csv()에이 코드를 적용 할 수 있는지 여부를 확인할 수 있습니까? ''index = ''또는''header =''같은 것을 생각하고 있습니다. 일단 데이터 프레임으로 전달되면, 데이터 프레임에서 인쇄하면 제대로 인쇄됩니다. 나는 결국 더 이상 나를위한 문제가 아니기 때문에 결국하고 싶다. 그러나 나는 알아내는 것이 궁금 할 것이다. – arnino

+0

'mode' https://docs.python.org/3.6/library/functions.html#open입니다. – Oersted

+0

문제가 해결되었다고해도 배울 기회가 있다면 재미있을 수 있습니다. 파이썬 2 정보로 내 게시물을 편집했습니다. – Oersted