Python escribiendo unicode extraño a CSV

Estoy intentando extraer información del artículo usando el paquete de python newspaper3k y luego escribir en un archivo CSV. Mientras que la información se descarga correctamente, tengo problemas con la salida a CSV. No creo que entienda completamente a Unicode, a pesar de mis esfuerzos por leerlo.

from newspaper import Article, Source import csv first_article = Article(url="http://www.bloomberg.com/news/articles/2016-09-07/asian-stock-futures-deviate-as-sp-500-ends-flat-crude-tops-46") first_article.download() if first_article.is_downloaded: first_article.parse() first_article.nlp article_array = [] collate = {} collate['title'] = first_article.title collate['content'] = first_article.text collate['keywords'] = first_article.keywords collate['url'] = first_article.url collate['summary'] = first_article.summary print(collate['content']) article_array.append(collate) keys = article_array[0].keys() with open('bloombergtest.csv', 'w') as output_file: csv_writer = csv.DictWriter(output_file, keys) csv_writer.writeheader() csv_writer.writerows(article_array) output_file.close() 

Cuando imprimo la clasificación [‘contenido’], que es first_article.text, la consola muestra el contenido del artículo muy bien. Todo se muestra correctamente, apóstrofes y todo. Cuando escribo en el CVS, el texto de la celda de contenido tiene caracteres impares. Por ejemplo:

“Al final del día, la economía de Europa no está en gran forma, la inflación no parece emocionante y hay un montón de riesgos políticos a tener en cuenta.

Hasta ahora he intentado:

 with open('bloombergtest.csv', 'w', encoding='utf-8') as output_file: 

en vano. También probé utf-16 en lugar de 8, pero eso resultó en que las celdas se escribieran en un orden extraño. No creó las celdas correctamente en el CSV, aunque la salida parecía correcta. También he intentado .encode (‘utf-8’) son varias variables pero nada ha funcionado.

¿Que esta pasando? ¿Por qué la consola imprimirá el texto correctamente, mientras que el archivo CSV tiene caracteres impares? ¿Cómo puedo arreglar esto?

Es muy probable que sea un problema con el software que utiliza para abrir o imprimir el archivo CSV; no “entiende” que el CSV está codificado en UTF-8 y asume ASCII, latin-1, ISO-8859-1 o similar encoding para ello.

Puede ayudar a ese software a reconocer la encoding del archivo CSV colocando una secuencia de la lista de materiales al principio de su archivo (que, en general, no se recomienda para UTF-8).

Utilice la encoding utf-8-sig . Excel requiere que la lista de materiales interprete UTF8; de lo contrario, asume la encoding localizada predeterminada.

Cambiar with open('bloombergtest.csv', 'w', encoding='utf-8') as output_file: to with open('bloombergtest.csv', 'w', encoding='utf-8-sig') as output_file: trabajado, según lo recomendado por Leon y Mark Tolonen.