Disclaimer: I'm in Europe.
According to this page Excel uses the semicolon ;
as default separator in Europe to "prevent conflicts" with the decimal comma.
Now, I have this Python code:
import csv
data = [["test", "data"], ["foo", "bar"]]
writer = csv.writer(open("data.csv", "wb"), dialect="excel")
writer.writerows(data)
Which should generate this file:
test;data
foo;bar
but instead it uses commas. Why is this happening? locale.getdefaultlocale()
returns ('nl_NL', 'cp1252')
.
This is because the csv.excel dialect is not locale aware. If you wish to explicitly use semicolons as the delimiter then you need to either explicitly pass the delimiter to csv.open as
or create a new dialect and register it
In either case, you should test how floating point numbers are written ... I suspect they won't be written in the European format you desire (with a comma as the radix)
The
excel
dialect is specified by the following attributes (inLib/csv.py
, line 57):I see no hint, that this is somehow locale-dependent - hence you'll always get
,
with the default dialect.But that's easily fixed, e.g.