csv.writer
代替numpy.savetxt
。我是Python和NumPy的新手。保存一个包含逗号的字符串的2D数组到CSV文件似乎不应该那么困难,但我无法按照自己想要的方式完成它。
假设我有一个看起来像这样的数组(由列表嵌套而成):
[['text1, text2', 'text3'],
['text4', 'text5']]
我需要一个 CSV 文件,格式如下(或者不带引号)在 Excel 中显示(竖杠 = 单元格分隔符):
'text1, text2' | 'text3'
'text4' | 'text5'
我正在使用 numpy.savetxt(filename, array, fmt="%s")
,并且我得到了以下的 CSV 输出(带有方括号):
['text1, text2','text3']
['text4','text5']
在Excel中显示如下:
['text1 | text2' | 'text3']
['text4' | 'text5']
我尝试了调整savetxt分隔符参数,但输出没有变化。
我需要手动处理吗?如果是这样,请告诉我是否有任何快捷方式。
最终,我需要将CSV导入Postgresql数据库。我不完全清楚CSV格式需要满足什么条件才能正常工作,但我认为如果在Excel中看起来不对,那么在Postgres中可能会出现问题。Postgres documentation中写道:
每条记录中的值由DELIMITER字符分隔。如果该值包含分隔符字符、QUOTE字符、NULL字符串、回车或换行符,则整个值将由QUOTE字符前缀和后缀,并且该值内部的任何QUOTE字符或ESCAPE字符的出现都将被转义字符所代替。您还可以使用FORCE_QUOTE来强制引用特定列中输出的非NULL值。
谢谢!
++++++++++++++++++++++++++++
真实的输入和输出,如果相关差异很大:
数组:
[['8908232', 'Plant Growth Chamber Facility at the Department of Botany, University of Wisconsin-Madison', 'DBI', 'INSTRUMENTAT & INSTRUMENT DEVP', '1/1/90', '12/19/89', 'WI', 'Standard Grant', 'Joann P. Roskoski', '12/31/91', '$94,914.00 ', 'BIO', '1108', '', '$0.00 ']]
CSV输出:
['8908232', 'Plant Growth Chamber Facility at the Department of Botany, University of Wisconsin-Madison', 'DBI', 'INSTRUMENTAT & INSTRUMENT DEVP', '1/1/90', '12/19/89', 'WI', 'Standard Grant', 'Joann P. Roskoski', '12/31/91', '$94,914.00 ', 'BIO', '1108', '', '$0.00 ']
Excel的版本:
['8908232' 'Plant Growth Chamber Facility at the Department of Botany University of Wisconsin-Madison' 'DBI' 'INSTRUMENTAT & INSTRUMENT DEVP' '1/1/90' '12/19/89' 'WI' 'Standard Grant' 'Joann P. Roskoski' '12/31/91' '$94 914.00 ' 'BIO' '1108' '' '$0.00 ']
csv
模块旨在处理各种 CSV 文件中的字符串写入和解析,支持每种合理的 CSV 方言。np.savetxt
旨在将数值数组写入到简单的 CSV 方言中... - abarnertlist
对象组成的一维数组,NumPy只是将它们视为标量对象并打印出它们的str
,这不是你想要的。但是,无论如何,你并没有你所问的问题,所以我不知道你为什么在问这个问题。如果你想解决真正的问题,请提出一个新的问题。如果解决这个问题恰好会引起你所问的问题(我认为不会,但可能会),请回来。 - abarnertcsv.write()
而不是numpy.savetxt()
给了我想要的输出。所以,感谢您回答了我可能没有提出的问题 :) - ems