我正在将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"
答案 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发送任何文件:JSON
,CSV
,XML
,PDF
,图像,音频等,则相同的方法应该适用。
对于更大的文件,您可以在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