добавить строку в словарь без кавычек в Python - PullRequest
0 голосов
/ 29 октября 2018

Я работаю с данными JSON для публикации в API. У меня все работает как положено форматирование данных. Однако, когда я собираю это вместе, я получаю неожиданную одинарную кавычку вокруг переменной. Мой словарь выглядит следующим образом.

                    data = {  
           "Items": [
           out2
           ],
           "TenantToken": "user",                 
           "UserToken": "pass"                    
                }

Данные в "out2" выглядят примерно так.

{"Code": "123456789", "LocationCode": "OTV-01", "Quantity": 69, "WarehouseId": 6884}, {"Code": "123456789", "LocationCode": "OTV-01", "Quantity": 123, "WarehouseId": 6884},

Однако, когда я публикую данные, я получаю

{'Items': ['{"Code": "805619531972", "LocationCode": "OSWATV-01", "Quantity": 126, "WarehouseId": 6884}, {"Code": "805619531989", "LocationCode": "OSWATV-01", "Quantity": 142, "WarehouseId": 6884}'], 'TenantToken': 'user', 'UserToken': 'pass'}

С добавленными одинарными кавычками

['{ }'] 

вместо

[{ }]

Это мой первый пост, поэтому я прошу прощения, если что-то пропустил. Спасибо!

Редактировать: out2 в настоящее время является строкой, созданной с помощью pandas и экспортированной в .txt (она сохраняется для будущего использования и потому что я буду зацикливать несколько файлов) Я импортировал его, используя

text_file = open('file.txt', "r")
                lines = text_file.readlines()

Цель - сделать json для отправки, который выглядит примерно так.

   {
  "Items": [
    {
      "Code": "String",
      "LocationCode": "String",
      "Quantity": 0,
      "WarehouseId": 0
    },
    {
      "Code": "String",
      "LocationCode": "String",
      "Quantity": 0,
      "WarehouseId": 0
    }
  ],
  "TenantToken": "String",
  "UserToken": "String"
}

1 Ответ

0 голосов
/ 29 октября 2018

Используйте ast для преобразования строки в словарь. Затем удалите дополнительный список, который вы используете после «Items»: и, наконец, используйте json.dumps для генерации правильного вывода json.

import json
import ast

out2 = '{"Code": "123456789", "LocationCode": "OTV-01", "Quantity": 69, "WarehouseId": 6884}, {"Code": "123456789", "LocationCode": "OTV-01", "Quantity": 123, "WarehouseId": 6884}'

data = {
    "Items":
        ast.literal_eval(out2),
    "TenantToken": "user",
    "UserToken": "pass"
}

print(json.dumps(data))

выход

{"Items": [{"Code": "123456789", "LocationCode": "OTV-01", "Quantity": 69, "WarehouseId": 6884}, {"Code": "123456789", "LocationCode": "OTV-01", "Quantity": 123, "WarehouseId": 6884}], "TenantToken": "user", "UserToken": "pass"}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...