2015-04-23 31 views
1

我有一个代码从服务器更新CSVs。在写入csv后python出现意外的换行符

a = urllib.urlopen(url) 
data = a.read().strip() 

然后我附加数据到CSV通过

f = open(filename+".csv", "ab") 
f.write(ndata) 
f.close() 

的问题是,随机地,以CSV的线被写入这样的(或获取换行符某处:它使用获取数据沿着CSV):

2,,,,, 
015-04-21 13:00:00,18,998,50,31,2293 

而不是其通常的形式:

2015-04-21 13:00:00,6,1007,29,25,2394 
2015-04-21 13:00:00,7,1004,47,26,2522 

我试着在程序运行后在shell中打印我的数据,它会显示破损的csv条目实际上看起来是正常的。

希望你们能帮助我。谢谢。

运行的Python 2.7.9在win8.1

+0

为什么在二进制模式下打开CSV? –

+0

我希望你知道在上面的代码片段中'ndata'应该是'data'。也许这是一个错字。 –

+0

@DanielRoseman - 在这里阅读一些答案,如果在Windows中,CSV应该以二进制打开。也试图以“a”模式打开它。 – carlo

回答

0

你的 “NDATA” 变量进行什么样的行动?

你应该使用CSV模块来管理CSV文件:评论后https://docs.python.org/2/library/csv.html

编辑:

如果不希望使用“CSV”模块,我联系你,而不是

a = urllib.urlopen(url) 
data = a.read().strip() 
ndata = data.split('\n') 
f.write('\n'.join(ndata[1:])) 

你应该这样做:

a = urllib.urlopen(url) 
f.writelines(a.readlines()[1:]) 

我不如果您确定您的传入数据是正确的,请查看解释您的随机不需要的“\ n”的任何原因。你管理很长的路线吗? 我建议您使用csv模块来读取您的输入内容:如果输入正确,您将确保拥有有效的CSV内容。

+0

没有其他操作在数据上完成。 追加后,但在此之前我关闭该文件: “DF = pd.read_csv(文件名+ “CSV ”) DF = df.drop_duplicates() df.to_csv(文件名+“。CSV”,索引=假)' – carlo