7月 202013
 

CSVフォーマットは以下の特徴がある
1、レコードは改行(CRLF、U+000D U+000A)で区切られる
2、フィールドの間はコンマ「,」(U+002C) で区切られる。
  最後のフィールドの後にはコンマは付けない。付ける場合、最後のフィールドは長さは0の内容が存在するとみなす
3、ファイルの先頭に「ヘッダ行」の定義がない(ソフトウェアにより、解釈が異なる)
4、フィールドは、ダブルクォート「”」(U+0022) で囲んでも囲まなくてもよい
5、フィールドがコンマ、ダブルクォート、改行を含む場合は、かならずダブルクォートで囲む。
6、フィールドに含まれるダブルクォートは2つ並べてエスケープする

参考サイト:http://ja.wikipedia.org/wiki/Comma-Separated_Values
Pythonにより、mysqlのレコーダーからCSVに変換する例は次になる

[python]
# coding=utf8
import os
class csv_writer:
#save data in csv
def write_rows(self,rows,file_name,re_write=True):
if (re_write==True):
if os.path.isfile(file_name)==True:
os.remove(file_name)
write_file=open(file_name,’a’)
new_txt=""
for t in rows:
new_txt=”’%sn”’%(self.row2csv(t))
write_file.write(new_txt)
def row2csv(self,row):
new_txt=""
for t in row:
new_txt=”’%s,%s”’%(new_txt,self.txt2field(t))
return new_txt[1:]
def txt2field(self,txt_temp):
txt=’%s’%(txt_temp)
if txt.find(‘"’)>-1:
txt=txt.replace(‘"’,’""’)
if txt.find(‘n’)>-1 or txt.find(‘,’)>-1 or txt.find(‘"’)>-1:
txt=”’"%s"”’%(txt)
return txt
if __name__==’__main__’:
a=((1,2,3),(4,”’yyunrppp”’,’tx"t’))
kk=csv_writer()
kk.write_rows(a,’tt.csv’)
[/python]