python


Issue with UTF-/ encoding on csv file for excel


EDIT:
As suggested special chars are displayed correctly if I use notepad++ to open the csv file. They are displayed correctly too when I import the csv file into excel.
How can I generate a csv file that is displayed correctly when opened by excel since file importing is not an option for the users
I'm generating a csv file that is being processed using Excel.
Special caracters like 'é' are not displayed properly when the file is opened with excel
This the poc I'm using to generate the csv file
# -*- coding: utf-8 -*-
import unicodecsv as csv
import codecs
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
def write_csv(file,headers):
resultFile =codecs.open(file, "w+", "utf-8")
#headers=[s.encode('utf-8') for s in headers]
wr = csv.writer(resultFile, dialect='excel',delimiter=";",encoding="utf-8")
wr.writerow(headers)
resultFile.close()
headers=[""]
headers.append("Command")
headers.append("Vérification".encode('utf-8'))
write_csv(r"C:\test2.csv",headers)

Python 2 solution using unicodecsv. Note that the documentation for unicodecsv says the module should be opened in binary mode (wb). Make sure to write Unicode strings. #coding is required to support non-ASCII characters in the source file. Make sure to save the source file in UTF-8.
#coding:utf8
import unicodecsv
with open('test.csv','wb') as f:
# Manually encode a BOM, utf-8-sig didn't work with unicodecsv
f.write(u'\ufeff'.encode('utf8'))
w = unicodecsv.writer(f,encoding='utf8')
# Write Unicode strings.
w.writerow([u'English',u'Chinese'])
w.writerow([u'American',u'美国人'])
w.writerow([u'Chinese',u'中国人'])
Python 3 solution. #coding is optional here because it defaults to UTF-8. Just make sure to save the source file in UTF-8. unicodecsv is no longer required. The built-in csv works correctly. csv documentation says to open the file with newline=''.
#coding:utf8
import csv
with open('test.csv','w',newline='',encoding='utf-8-sig') as f:
w = csv.writer(f)
# Write Unicode strings.
w.writerow([u'English',u'Chinese'])
w.writerow([u'American',u'美国人'])
w.writerow([u'Chinese',u'中国人'])

I fixed this issue using UTF-8 BOM encoding.
# -*- coding: utf-8-sig-*-
import unicodecsv as csv
import codecs
import sys
reload(sys)
sys.setdefaultencoding("utf-8-sig")
def write_csv(file,headers):
resultFile =codecs.open(file, "w+", "utf-8-sig")
#headers=[s.encode('utf-8') for s in headers]
wr = csv.writer(resultFile, dialect='excel',delimiter=";",encoding="utf-8-sig")
wr.writerow(headers)
resultFile.close()
headers=[""]
headers.append("Command")
headers.append("Vérification")
write_csv(r"C:\Users\ATHENA-HDA\AppData\Local\Temp\test2.txt",headers)


Related Links

Why isn't my frames background showing?
Trying to do a natural join using python standard library
How to combine several querysets by key in common?
How I can speed up row column access to pandas dataframe?
Create list with combinations of 3 elements of other list with repetitions
PyQt5 does not change gifs
Pydub - combine split_on_silence with minimum length / file size
how to choose python version accordingly in pycharm?
Unable to import Flask to Kivy iOS
Unique list without spliting entries based on spaces in python
Uncaught SyntaxError: Unexpected token & error for flask and html
Django celery tasks working very long
Python, create plot from DataFrame
having this error TypeError: cannot concatenate 'str' and 'int' objects when trying to do math with variables stored with pickle
Pygame Tone Generator [duplicate]
Django - custom userprofile NoSuchTable error

Categories

HOME
swift
dotnetrdf
oauth
textwatcher
ipython
agile
cocos2d-x-3.0
mapbox-gl-js
extract
phaser-framework
adsense
jrebel
devstack
actionscript-2
hosts
jboss-eap-7
rfid
onsen-ui2
sendkeys
android-toolbar
tortoisegit
statusbar
piwik
bootstrap-typeahead
pdfsharp
lync-2013
vcard
xilinx-ise
construct-2
ifstream
viewstate
css-counter
oscommerce
text-files
es-shell
initializer
flex4.5
rule
stdclass
crop
powermta
amazon-clouddrive
fqdn
defold
cgcontext
fontconfig
communication-protocol
visual-studio-templates
libreadline
xib
dts
qregexp
bluesnap
evo
registrykey
built-in
wif
xjc
rx-groovy
crash-dumps
pylearn
ejabberd-saas
obfuscar
and-operator
fragment-tab-host
collabnet
mov
internal
winrt-httpclient
osx-snow-leopard
nservicebus4
image-zoom
dig
adomd.net
userid
maven-ant-tasks
associative
chatroom
hardware-acceleration
external-assemblies
multibyte-functions
virtualquery
web-analytics-tools





Mobile Apps Dev
Database Users
javascript
java
csharp
php
android


MS Developer
developer works
python
ios
c
html
jquery


RDBMS discuss