删除每行中的双引号(csv编写器)

时间:2019-07-17 10:28:05

标签: python python-3.7

我正在将API结果写入python 3.7中的CSV文件中。问题在于,它在写入文件时会在每行中添加双引号(“”)。

我将csv格式传递给API调用,以便获得csv格式的结果,然后将其写入csv文件并存储到特定位置。 请建议是否有更好的方法可以做到这一点。

这是示例代码。

    with open(target_file_path, 'w', encoding='utf8') as csvFile:
        writer = csv.writer(csvFile, quoting=csv.QUOTE_NONE, escapechar='\"')
        for line in rec.split('\r\n'):
            writer.writerow([line])

当我使用escapechar='\"'时,它会在每个列值的处添加(")。

这是示例记录。

2264855868",42.38454",-71.01367",07/15/2019 00:00:00",07/14/2019 20:00:00"
2264855868",42.38454",-71.01367",07/15/2019 01:00:00",07/14/2019 21:00:00"

3 个答案:

答案 0 :(得分:0)

您是否尝试过从escapechar='\"'删除反斜杠?不必要,因为您在字符串中使用单引号。

编辑:来自documentation

  

如果引用设置为QUOTE_NONE,则编写者使用一个单字符字符串转义定界符;如果双引号设置为False,则使用quotechar。阅读时,escapechar删除了以下字符中的任何特殊含义。

和距离计:

  

一个用于分隔字段的单字符字符串。默认为','

因此它将使用您设置为,(在本例中为escapechar

的情况下逃逸分隔符(,

如果您不想逃脱,请尝试将其留空

答案 1 :(得分:0)

API提供了可以直接写入文件的字符串/字节。

data = request.get(..).content
open(filename, 'wb').write(data)

使用csv.writer,您将不得不使用csv.reader将字符串/字节转换为Python的数据,然后使用csv.writer将其转换回字符串/字节-因此,这样做是没有意义的


如果API发送任何文件:JSONCSVXMLPDF,图像,音频等,则相同的方法应该适用。

对于更大的文件,您可以在chunk中使用stream / requests。 Doc:requests - Advanced Usage

答案 2 :(得分:0)

试试:

import codecs

def find_replace(file, search_characters, replace_with):
    text = codecs.open(file, "r", "utf-8-sig")
    text = ''.join([i for i in text]).replace(
        search_characters, replace_with)
    x = codecs.open(file, "w", "utf-8-sig")
    x.writelines(text)
    x.close()


if __name__ == '__main__':
    file = "target_file_path"
    search_characters = '"'
    replace_with = ''

    find_replace(file, search_characters, replace_with)

输出:

2264855868,42.38454,-71.01367,07/15/2019 00:00:00,07/14/2019 20:00:00
2264855868,42.38454,-71.01367,07/15/2019 01:00:00,07/14/2019 21:00:00