python - 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 在导出时没有显示这个。
提前致谢
解决方案
正如此处回答的那样,它是关于 CSV 的格式。 使用记事本/记事本++ 打开时,在 CVS 文件的行中添加了不必要的双引号
所以,如果你想摆脱双引号,我建议试试这个:
csv.writer(csvfile, quoting=csv.QUOTE_NONE)
推荐阅读
- python - 如何通过python中的用户输入(也循环)将元素从列表A移动到列表B?
- php - foreach 验证在我的情况下不起作用 PHP
- c - 为调试目的在 C 中获取类型的最简单方法
- javascript - 我需要将子组件的 ref 传递给 javascript 中的父组件
- java - gradle 无法正确重建 jar
- java - 减去数组中的元素
- linux - 在 JavaFX 应用程序中检测 HIDPI 设置
- reactjs - 我应该怎么办?如何将图像上传到 Storage 和 addDoc() 到 FireStore
- parameters - “NoneType”对象不可用于装饰器函数
- wordpress - 如何为 JSON 对象内的数据编写 REST API 查询