Maison > Questions et réponses > le corps du texte
首先数据是以标准的json格式的文本。然后想要通过python脚本来导入Mongodb中。
json
{
"service": "http",
"datetime": "2017-03-28 17:23:19",
"starttime": "1490692810",
"endtime": "1490692999",
"port": 80
}{
"service": "ewall",
"datetime": "2017-03-28 17:23:19",
"starttime": "1490692810",
"endtime": "1490692999",
"port": 1328
}
python部分代码:
with open(filen, 'r') as f:
while 1:
try:
jsonstr = f.readline().strip()
# print jsonstr 可以输出整个json的内容
if not jsonstr:
break
try:
j = json.loads(jsonstr) #这里好像不处理的问题
except:
continue
jsonlist.append(j)
except:
break
请问这个情况要怎么解决呢?谢谢
阿神2017-04-18 10:31:42
Votre problème est que le vôtre n'est pas au format json standard. Le format standard devrait être comme ceci
[{
"service": "http",
"datetime": "2017-03-28 17:23:19",
"starttime": "1490692810",
"endtime": "1490692999",
"port": 80
},
{
"service": "ewall",
"datetime": "2017-03-28 17:23:19",
"starttime": "1490692810",
"endtime": "1490692999",
"port": 1328
}]
Deuxièmement, vos données sont lues en lignes. Veuillez me dire à quoi ressemble une ligne de vos données
黄舟2017-04-18 10:31:42
La réponse de @sheep3 est correcte.
Si vous mettez JSON directement dans MongoDB, vous pouvez utiliser mongoimport (https://docs.mongodb.com/manu...
Si vous souhaitez toujours traiter des données, vous pouvez utiliser un code comme celui-ci :
import json
filename = 'test.json'
with open(filename, 'r') as f:
content = json.load(f)
Si le contenu du fichier JSON est plus grand que la mémoire, vous devez ouvrir le fichier JSON via le streaming. Vous pouvez utiliser le package ijson (https://pypi.python.org/pypi/...). L'utilisation est également relativement simple :
import ijson
with open('test.json') as fp:
objects = ijson.items(fp, "item")
for object in objects:
print(object)
迷茫2017-04-18 10:31:42
La réponse de @Christoph nommait directement une solution plus simple et optimisée, et j'ai appris une astuce