使用urllib2获取并导入文件夹的导入CSV的格式如下:
number,season,episode,production code,airdate,title,special?,tvrage
1,1,1,"101",24/Sep/07,"Pilot",n,"http://www.tvrage.com/Chuck/episodes/579282"
现在我成功地将其转换为SQL语句以及可以插入到我的数据库中的另一个CSV文件。进入这样的格式:
,1,1,1,"Pilot",'2006-10-11',,,,,1,2011-12-23 15:52:49,2011-12-23 15:52:49,1,1
使用以下代码
csv = """,%s,%s,%s,%s,%r,,,,,1,2011-12-23 15:52:49,2011-12-23 15:52:49,1,1""" % (showid, line[1],line[2], line[5], date(line[4]))
print>>final, csv
编辑 -
我已从字符串格式更改为:
csv = ','+showid+','+line[1]+','+line[2]+','+line[5]+','+date(line[4])+',,,,,1,2011-12-23 15:52:49,2011-12-23 15:52:49,1,1'
它不是更好,我仍然遇到麻烦,在解析时跳过了一些文件。不确定它是我还是CSV模块。
问题是它完全可以通过一些文件。它只是跳过一些CSV文件,对于一些我只是得到像IndexError这样的错误:列表索引超出范围
如果有人有CSV文件的经验并让他们正确解析,我真的很感激帮助。
这是完整的源代码: http://cl.ly/2W472g303D1p0J3S2o46
dsimport.py - http://pastie.org/3076663 CSVFileHandler.py - http://pastie.org/3076667
由于
答案 0 :(得分:1)
我不确定究竟是什么错误,但这里有一些提示:
line
有点坏名字,因为它不是字符串行,它是row
或元素列表。这就是蒂姆和我一见钟情的原因。line
至少有6个元素,如脚本所需。join
方法。这是一个小型重构:
def processFile(row):
if len(row) < 6:
#raise Exception('too few columns')
# maybe it's better to just ignore bad rows in your case
return
items = [
'',
showid,
row[1],
row[2],
row[5],
date(row[4]),
]
res = ','.join(items)
res += ',,,,,1,2011-12-23 15:52:49,2011-12-23 15:52:49,1,1'
print res
print>>final, res
handler = CSVFileHandler('/Users/tharshan/WebRoot/stv/export/csv/%s-save.csv' % name)
try:
handler.process(processFile, name)
except Exception, e:
print 'Failed processing and skipping %s because of: %s' % (name, e)
final.close()
答案 1 :(得分:0)
没关系所有固定的。最后我只使用了excel方言,并用管线输出了csv。无论哪种方式,这都是非常繁琐和诚实地感觉我真的很幸运。
感谢您的帮助。