【发布时间】:2016-10-26 16:29:07
【问题描述】:
从Mongodb导出数据到csv时如何去除CSV中子字段的名称、u字母和括号?
工作流集合示例:
{
"_id": ObjectID("54b98bca7c1f57d85021f308"),
"requiredLanguages": [
"en"
],
"isDeleted": false,
"name": {
"en": "Test Workflow"
},
"isEditable": false,
"date": {
"created": ISODate("2016-07-21T23:06:38.748Z")
}
}
如果我将“date.created”放在 python 脚本中,它会显示我不想要的所有内容。
python 2.7 脚本:
import csv
cursor = db.workflows.find( {}, {'_id': 1, 'requiredLanguages': 1, 'isDeleted': 1, 'name': 1, 'isEditable':1, 'date.created':1 })
with open ('workflows.csv', 'w') as outfile:
fields = ['_id', 'requiredLanguages', 'isDeleted', 'name', 'isEditable', 'date']
write = csv.DictWriter(outfile, fieldnames=fields)
write.writeheader()
for x in cursor:
write.writerow(x)
csv 样本:
_id,requiredLanguages,isDeleted,name,isEditable,date
5318cbd9a377f52a6a0f671f,[u'en'],False,{u'en': u'Default Workflow'},False,"{u'created': datetime.datetime(2016, 7, 21, 23, 6, 38, 748000)}"
54b98bca7c1f57d85021f308,[u'en'],False,{u'en': u'Test Workflow'},False,"{u'created': datetime.datetime(2016, 7, 21, 23, 6, 38, 748000)}"
如果我将“日期”更改为不同的名称,它不起作用。 我想获得“date.created”下的值。还有怎么去掉你的字母?有人可以帮我删除 u 字母和“date.created”的名称。非常感谢
【问题讨论】:
-
您在
requiredLanguages字段中有一个列表,在name中有一个dict。您需要弄清楚您希望它们如何出现在.csv文件中,然后“flatten” 这些字段也是如此,因此它们在调用write.writerow(x)之前显示为字符串,例如,对于list(requiredLanguages字段)你可以看看这个:stackoverflow.com/questions/5618878/… -
Python 2.x 我假设?你能添加一个额外的标签吗?
-
我想获取 CSV 中出现的值,就像 _id,requiredLanguages,isDeleted,name,isEditable,date 5318cbd9a377f52a6a0f671f,en,False,'Default Workflow,False,2016, 7, 21, 23, 6, 38, 748000 我不需要 CSV 文件中出现的括号、引号、“en”、“{u'created': datetime.datetime”。
标签: mongodb python-2.7 csv