为什么csv文件中的某些行格式无效?

时间:2016-06-27 15:46:59

标签: python csv

我目前正在从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])

invalid csv

如果在Excel中打开csv文件,您也会立即看到该行无效。虽然有效的一个采用默认高度和整个宽度,但无效的一个采用更高的高度但是宽度更小。

有谁知道这个问题的原因?

2 个答案:

答案 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,因为我认为这将使以后更容易处理数据。