【问题标题】:convert array of strings inside of string into a python list将字符串内的字符串数组转换为python列表
【发布时间】:2018-11-20 21:41:20
【问题描述】:

我已经从我的 React 客户端向我的 Django + DRF api 发送了一些表单数据。

在表单数据内部,我有一个属性date_strings,它是一个日期时间字符串数组。即 ["date1", "date2", "date3"]

为了将它发送到我的 Django api,我使用 JSON.stringify 将字符串数组转换为字符串

const myForm = new FormData();
myForm.set("date_strings", JSON.stringify(dateStrings));

在我的序列化程序的 create 方法中,我想将此数据转换为列表。

 def create(self, validated_data):
    stringified_array = validated_data.pop('date_strings')
    // stringified_array: '["date1", "date2", "date3"]'

如何将字符串中的字符串数组转换为 python 列表?

【问题讨论】:

  • Parse JSON in Python的可能重复
  • 我尝试过使用 json.loads 但它不起作用。我认为这是因为这是一个数组而不是格式化的 json
  • Works just fine for me。您确定您的数据采用上述格式吗?
  • 我会仔细确认
  • 我认为问题可能出在您的输入上,[", "name": "server.posts.serializers", "levelname": "INFO", "request_id": "none"} 对我来说似乎不对...

标签: python json django parsing


【解决方案1】:

您可以使用.split 轻松地将字符串转换为列表。但是,您必须删除最外面的字符 [""],否则这些字符也会添加到您的字符串列表中。

stringified = '["date1", "date2", "date3"]'
unstringified = stringified[2:-2].split('", "')

返回

['date1', 'date2', 'date3']

@mhodges 提到的更好的解决方案

import json
stringified = '["date1", "date2", "date3"]'
unstringified = json.loads(stringified)

也输出:

['date1', 'date2', 'date3']

【讨论】:

  • 他不是在做json.loads()的解决方案吗?
  • 这是正确答案!我犯了一个错误, json.loads() 工作正常。我之前尝试过使用 json.loads,但我在它下面有一个日志,所以一直收到消息 ["TypeError: must be str, not type\n"]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-06
相关资源
最近更新 更多