2015-01-05 1 views
2

나는 국가 이름을 포함하여 여러 악센트 부호가있는 문자로 된 CSV를 가지고 있습니다. 구문 분석을 위해 지정된 인코딩 및 방언으로 CSV 판독기를 사용하고 있지만 액센트를 제대로 처리하지는 않습니다.파이썬 3에서 Excel 문서의 텍스트를 구문 분석하는 방법은 무엇입니까?

p = re.compile('(?<=n).*?(?=,)') 
with open('/file.csv', 'rt', encoding='cp1252') as csvFile: 
    reader = csv.reader(csvFile, dialect='excel') 
    next(csvFile) 
    for row in reader: 
     print(row[0]) 
     accented_words = p.findall(row[8])[0].strip() 
     print(accented_words) 

p은 일부 악센트 부호가있는 문자를 빼내는 정규 표현식입니다. 그것은 나에게 'C te te dory'와 같은 결과를 준다. 이 부분을 지나치게 강조 문자를 보존하려면 어떻게해야합니까?

+2

정말'cp1252' 인코딩입니까? 이 파일은 실제로 utf-8 또는 다른 인코딩 일 가능성이 큽니다. 아마도 https://pypi.python.org/pypi/chardet 라이브러리를 사용해보고 인코딩이 무엇인지 생각해보십시오. – VooDooNOFX

답변

1

파이썬 3 excel 방언을 사용하는 CSV 파일을 구문 분석하는 올바른 방법 :

with open('/file.csv', newline='', encoding=correct_encoding) as file: 
    reader = csv.reader(file) 

문제 잘못된 입력 문자 인코딩 수 있습니다 :

>>> print(u'Côte d’Ivoire'.encode('utf-8').decode('cp1252')) 
Côte d’Ivoire 

예는 경우 어떻게되는지 보여줍니다 utf-8 데이터는 cp1252로 디코딩됩니다.

+0

공개 호출에서 'cp1252'를 'utf-8'로 바꿀 때 다음과 같은 오류가 발생합니다. 'UnicodeDecodeError :'utf-8 '코덱은 3688 위치의 바이트 0x99를 디코딩 할 수 없습니다. 특수 문자가있는 행. 그걸 어떻게 피하라고 제안하나요? – BarFooBar

+0

요점은 문제가 csv와 아무런 관련이 없다는 것입니다. 파일이 손상되었을 수 있습니다 (예 : 파일을 디코딩하는 단일 문자 인코딩이 없음). 브라우저에서 파일을 열어 선택한 인코딩을 확인하십시오. – jfs

관련 문제