想要用python处理csv文件。
去查了下,python中本身就自带csv模块。
然后参考在线手册:
http://docs.python.org/2/library/csv.html
去试试。
【用python生成csv】
1. 按照手册的例子,试了试:
1
2
3
4
5
6
|
import
csv
with
open
(
'eggs.csv'
,
'wb'
) as csvfile:
spamwriter
=
csv.writer(csvfile, delimiter
=
' '
,
quotechar
=
'|'
, quoting
=
csv.QUOTE_MINIMAL)
spamwriter.writerow([
'Spam'
]
*
5
+
[
'Baked Beans'
])
spamwriter.writerow([
'Spam'
,
'Lovely Spam'
,
'Wonderful Spam'
])
|
然后生成的文件,原始数据为:
1
2
|
Spam Spam Spam Spam Spam |Baked Beans|
Spam |Lovely Spam| |Wonderful Spam|
|
然后用excel打开结果为:
很明显,不是想要的结果,因为只是一列,实际应该是6列才对。
2. 然后折腾了一下之后,参考手册的说明:
去改为:
1
2
3
4
5
6
|
import
csv
with
open
(
'eggs.csv'
,
'wb'
) as csvfile:
#spamwriter = csv.writer(csvfile, delimiter=' ',quotechar='|', quoting=csv.QUOTE_MINIMAL)
spamwriter
=
csv.writer(csvfile, dialect
=
'excel'
)
spamwriter.writerow([
'Spam'
]
*
5
+
[
'Baked Beans'
])
spamwriter.writerow([
'Spam'
,
'Lovely Spam'
,
'Wonderful Spam'
])
|
然后就可以显示正常了:
去看了下源码为:
1
2
|
Spam,Spam,Spam,Spam,Spam,Baked Beans
Spam,Lovely Spam,Wonderful Spam
|
【总结】
使用python的csv生成excel所兼容的csv文件的话,主要就是创建writer时的参数时要有dialect=’excel’,就可以了。
【用Python读取从excel导出的csv文件】
再去尝试用python处理,从excel 2010导出的一个csv文件:
参考手册的代码,使用如下代码:
1
2
3
4
5
6
|
import
csv
with
open
(
'excel_2010_ms-dos.csv'
,
'rb'
) as csvfile:
#spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
spamreader
=
csv.reader(csvfile, dialect
=
'excel'
)
for
row
in
spamreader:
print
', '
.join(row)
|
去测试,然后是可以正常打印出结果的:
1
2
3
4
|
D:\tmp\tmp_dev_root\python\test_csv>test_csv.py
a1, b1, c1, d1
a2, , c2,
, b3, ,
|
【总结】
只要指定了对应的dialect=’excel’,也是可以很方便的使用python的csv处理excel所导出的ms-dos的csv文件的。