我目前正在从API获取数据,我想将这些数据存储为csv。
但是,有些行总是无效的,这意味着我无法通过Excel的文本列功能拆分它们。
我按如下方式创建csv文件:
with open(directory_path + '/' + file_name + '-data.csv', 'a', newline='') as file:
# Setup a writer
csvwriter = csv.writer(file, delimiter='|')
# Write headline row
if not headline_exists:
csvwriter.writerow(['Title', 'Text', 'Tip'])
# Build the data row
record = data['title'] + '|' + data['text'] + '|' + data['tip']
csvwriter.writerow([record])
如果在Excel中打开csv文件,您也会立即看到该行无效。虽然有效的一个采用默认高度和整个宽度,但无效的一个采用更高的高度但是宽度更小。
有谁知道这个问题的原因?
答案 0 :(得分:1)
行不是无效的,但你做的是。
首先:您使用管道作为分隔符。在某些情况下它很好,但考虑到你想立即将它加载到Excel中,我在"excel" dialect中导出数据似乎更明智:
csvwriter = csv.writer(file, dialect='excel')
其次,请看以下几行:
record = data['title'] + '|' + data['text'] + '|' + data['tip']
csvwriter.writerow([record])
通过这种方式,您基本上可以告诉csv编写器您需要一个包含管道的列。如果你使用csv编写器,你不能自己连接分隔符,它会使用编写器无效。所以这就应该是这样做的:
record = [data['title'], data['text'], data['tip']]
csvwriter.writerow(record)
希望它有所帮助。
答案 1 :(得分:0)
我终于发现我必须删除文本和提示,因为它们有时会包含会破坏格式的空格。
此外,我还遵循建议使用excel dialect
,因为我认为这将使以后更容易处理数据。