首页 > 解决方案 > Pandas 导出的 CSV 文件未将文本/字符串括在双引号中

问题描述

我有一个 python 脚本,它从 MongoDB 数据库获取 JSON 文件,执行 ETL 过程,例如过滤、展平字典,最后将数据帧导出到 CSV(工作正常)。

我遇到的问题是当我在记事本中打开 CSV 时,文本列没有用引号引起来。

如果我错了,请纠正我,但我相信当列的数据类型被指定为字符串/文本时,当您在 Excel 中打开该文件时,没有引号,但在记事本中打开时,它应该在引号内显示​​这些字符串列。

from pymongo import MongoClient
import pandas as pd
from azure.storage.filedatalake import DataLakeServiceClient
from azure.core._match_conditions import MatchConditions
from azure.storage.filedatalake._models import ContentSettings
from pandas import json_normalize
from datetime import datetime, timedelta
import numpy as np
import json

mongo_client = MongoClient("XXXX")
db = mongo_client.rfqdb 
table = db.request
document = table.find({'createdAt': {'$gt': datetime.utcnow() - timedelta(days=7)}}) 
docs = list(document)
docs = json.dumps(docs,default=str)
docs = docs.replace(r"\n",'').replace(r"\r\n",'').replace(r"\r",'')
docs = json.loads(docs)
docs = json_normalize(docs)
docs = docs[["id","reportName"]].astype("string")
print(docs.dtypes)
id                          string
reportName                  string

当我在 Notepad++ 中打开从 Pandas 导出的 CSV 文件时,它不会在引号内显示​​字符串:

在此处输入图像描述

任何人都可以对这种情况有所了解,因为我已经在 Azure 数据工厂中完成了同样的过程,我已将这两列映射为字符串,当我在记事本中打开 CSV 时,它会显示包含在引号内的字符串(见下文),所以我有点困惑为什么 Python Pandas 在导出时没有显示这个。

在此处输入图像描述

提前致谢

标签: pythonpandascsvexport-to-csv

解决方案


正如此处回答的那样,它是关于 CSV 的格式。 使用记事本/记事本++ 打开时,在 CVS 文件的行中添加了不必要的双引号

所以,如果你想摆脱双引号,我建议试试这个:

csv.writer(csvfile, quoting=csv.QUOTE_NONE)

推荐阅读