Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中删除字符串周围的引号?_Python - Fatal编程技术网

如何在python中删除字符串周围的引号?

如何在python中删除字符串周围的引号?,python,Python,我正在尝试删除数据[clonedRadarsdetailslist]中所有元素的引号,如下所示,我发现了两个问题,有人能提供如何解决此问题的指导吗 1.引号不会被删除 2.脚本执行后,并非所有元素都存在,可能是因为我正在覆盖 import datetime data = {'orgRadar': u'37125110', 'created_on': datetime.datetime(2018, 5, 10, 22, 48, 46, 979953), 'clonedRadarsdetailsli

我正在尝试删除
数据[clonedRadarsdetailslist]
中所有元素的引号,如下所示,我发现了两个问题,有人能提供如何解决此问题的指导吗

1.引号不会被删除

2.脚本执行后,并非所有元素都存在,可能是因为我正在覆盖

import datetime
data = {'orgRadar': u'37125110', 'created_on': datetime.datetime(2018, 5, 10, 22, 48, 46, 979953), 'clonedRadarsdetailslist': ["{'clonedRadar': 40145048, 'clonedStatus': 'PASS', 'clonedRadarFinalStatus': 'PASS', 'updatedFailedReason': 'N/A', 'clonedRadarFinalStatusReason': 'N/A', 'updateStatus': 'PASS', 'clonedStatusfailReason': 'N/A'}", "{'clonedRadar': 40145054, 'clonedStatus': 'PASS', 'clonedRadarFinalStatus': 'PASS', 'updatedFailedReason': 'N/A', 'clonedRadarFinalStatusReason': 'N/A', 'updateStatus': 'PASS', 'clonedStatusfailReason': 'N/A'}"]}
print data
for radardetails in data['clonedRadarsdetailslist']:
    radardetails = radardetails.strip('\"')
    data['clonedRadarsdetailslist'] = radardetails

print data
当前结果:

{'orgRadar': u'37125110', 'created_on': datetime.datetime(2018, 5, 10, 22, 48, 46, 979953), 'clonedRadarsdetailslist': "{'clonedRadar': 40145054, 'clonedStatus': 'PASS', 'clonedRadarFinalStatus': 'PASS', 'updatedFailedReason': 'N/A', 'clonedRadarFinalStatusReason': 'N/A', 'updateStatus': 'PASS', 'clonedStatusfailReason': 'N/A'}"}
预期结果:

{'orgRadar': u'37125110', 'created_on': datetime.datetime(2018, 5, 10, 22, 48, 46, 979953), 'clonedRadarsdetailslist': [{'clonedRadar': 40145048, 'clonedStatus': 'PASS', 'clonedRadarFinalStatus': 'PASS', 'updatedFailedReason': 'N/A', 'clonedRadarFinalStatusReason': 'N/A', 'updateStatus': 'PASS', 'clonedStatusfailReason': 'N/A'}, {'clonedRadar': 40145054, 'clonedStatus': 'PASS', 'clonedRadarFinalStatus': 'PASS', 'updatedFailedReason': 'N/A', 'clonedRadarFinalStatusReason': 'N/A', 'updateStatus': 'PASS', 'clonedStatusfailReason': 'N/A'}]}

您有一个key:value JSON“dictionary”,需要将其转换为一系列数组,以便循环遍历这些值。您需要使用
JSON.loads()
函数来完成此操作。我不能100%确定您想要什么值,我也没有更改您的代码以适应除其他代码中的值以外的任何特定值,因为我不确定您想要什么,但这应该会将JSON数据转换为超级数组,然后可以循环通过:

import datetime
data = {'orgRadar': u'37125110', 'created_on': datetime.datetime(2018, 5, 10, 22, 48, 46, 979953), 'clonedRadarsdetailslist': ["{'clonedRadar': 40145048, 'clonedStatus': 'PASS', 'clonedRadarFinalStatus': 'PASS', 'updatedFailedReason': 'N/A', 'clonedRadarFinalStatusReason': 'N/A', 'updateStatus': 'PASS', 'clonedStatusfailReason': 'N/A'}", "{'clonedRadar': 40145054, 'clonedStatus': 'PASS', 'clonedRadarFinalStatus': 'PASS', 'updatedFailedReason': 'N/A', 'clonedRadarFinalStatusReason': 'N/A', 'updateStatus': 'PASS', 'clonedStatusfailReason': 'N/A'}"]}
json = json.loads(data)
for radardetails in json['clonedRadarsdetailslist']:
    radardetails = radardetails.strip('\"')
    data['clonedRadarsdetailslist'] = radardetails

print json
应该可以工作,但不确定您实际上希望从中获得什么,但您需要将JSON转换为一系列数组,然后通过它们进行循环以获得必要的值

编辑:真的很抱歉仓促行事,假设我知道发生了什么。你有一本字典,它不是我最初以为你有的。这里有一个解决方案,它将为您提供多个信息数组,您可以从这里提取您想要的任何信息:

import datetime
data = {'orgRadar': u'37125110', 'created_on': datetime.datetime(2018, 5, 10, 22, 48, 46, 979953), 'clonedRadarsdetailslist': ["{'clonedRadar': 40145048, 'clonedStatus': 'PASS', 'clonedRadarFinalStatus': 'PASS', 'updatedFailedReason': 'N/A', 'clonedRadarFinalStatusReason': 'N/A', 'updateStatus': 'PASS', 'clonedStatusfailReason': 'N/A'}", "{'clonedRadar': 40145054, 'clonedStatus': 'PASS', 'clonedRadarFinalStatus': 'PASS', 'updatedFailedReason': 'N/A', 'clonedRadarFinalStatusReason': 'N/A', 'updateStatus': 'PASS', 'clonedStatusfailReason': 'N/A'}"]}
list = []
for key, value in data.items():
    temp = [key,value]
    list.append(temp)

for item in list:
    print (item)
编辑2:刚刚改进了代码以更好地满足您的需要,现在(我希望)它将为您提供所需的功能:

import datetime
import ast
data = {'orgRadar': u'37125110', 'created_on': datetime.datetime(2018, 5, 10, 22, 48, 46, 979953), 'clonedRadarsdetailslist': ["{'clonedRadar': 40145048, 'clonedStatus': 'PASS', 'clonedRadarFinalStatus': 'PASS', 'updatedFailedReason': 'N/A', 'clonedRadarFinalStatusReason': 'N/A', 'updateStatus': 'PASS', 'clonedStatusfailReason': 'N/A'}", "{'clonedRadar': 40145054, 'clonedStatus': 'PASS', 'clonedRadarFinalStatus': 'PASS', 'updatedFailedReason': 'N/A', 'clonedRadarFinalStatusReason': 'N/A', 'updateStatus': 'PASS', 'clonedStatusfailReason': 'N/A'}"]}
list = []
radarlist = []
for key, value in data.items():
    temp = [key,value]
    list.append(temp)

radar = ast.literal_eval(list[2][1][0])

for key, value in radar.items():
    temp = [key,value]
    radarlist.append(temp)

for item in radarlist:
    print(item)

您有一个key:value JSON“dictionary”,需要将其转换为一系列数组,以便循环遍历这些值。您需要使用
JSON.loads()
函数来完成此操作。我不能100%确定您想要什么值,我也没有更改您的代码以适应除其他代码中的值以外的任何特定值,因为我不确定您想要什么,但这应该会将JSON数据转换为超级数组,然后可以循环通过:

import datetime
data = {'orgRadar': u'37125110', 'created_on': datetime.datetime(2018, 5, 10, 22, 48, 46, 979953), 'clonedRadarsdetailslist': ["{'clonedRadar': 40145048, 'clonedStatus': 'PASS', 'clonedRadarFinalStatus': 'PASS', 'updatedFailedReason': 'N/A', 'clonedRadarFinalStatusReason': 'N/A', 'updateStatus': 'PASS', 'clonedStatusfailReason': 'N/A'}", "{'clonedRadar': 40145054, 'clonedStatus': 'PASS', 'clonedRadarFinalStatus': 'PASS', 'updatedFailedReason': 'N/A', 'clonedRadarFinalStatusReason': 'N/A', 'updateStatus': 'PASS', 'clonedStatusfailReason': 'N/A'}"]}
json = json.loads(data)
for radardetails in json['clonedRadarsdetailslist']:
    radardetails = radardetails.strip('\"')
    data['clonedRadarsdetailslist'] = radardetails

print json
应该可以工作,但不确定您实际上希望从中获得什么,但您需要将JSON转换为一系列数组,然后通过它们进行循环以获得必要的值

编辑:真的很抱歉仓促行事,假设我知道发生了什么。你有一本字典,它不是我最初以为你有的。这里有一个解决方案,它将为您提供多个信息数组,您可以从这里提取您想要的任何信息:

import datetime
data = {'orgRadar': u'37125110', 'created_on': datetime.datetime(2018, 5, 10, 22, 48, 46, 979953), 'clonedRadarsdetailslist': ["{'clonedRadar': 40145048, 'clonedStatus': 'PASS', 'clonedRadarFinalStatus': 'PASS', 'updatedFailedReason': 'N/A', 'clonedRadarFinalStatusReason': 'N/A', 'updateStatus': 'PASS', 'clonedStatusfailReason': 'N/A'}", "{'clonedRadar': 40145054, 'clonedStatus': 'PASS', 'clonedRadarFinalStatus': 'PASS', 'updatedFailedReason': 'N/A', 'clonedRadarFinalStatusReason': 'N/A', 'updateStatus': 'PASS', 'clonedStatusfailReason': 'N/A'}"]}
list = []
for key, value in data.items():
    temp = [key,value]
    list.append(temp)

for item in list:
    print (item)
编辑2:刚刚改进了代码以更好地满足您的需要,现在(我希望)它将为您提供所需的功能:

import datetime
import ast
data = {'orgRadar': u'37125110', 'created_on': datetime.datetime(2018, 5, 10, 22, 48, 46, 979953), 'clonedRadarsdetailslist': ["{'clonedRadar': 40145048, 'clonedStatus': 'PASS', 'clonedRadarFinalStatus': 'PASS', 'updatedFailedReason': 'N/A', 'clonedRadarFinalStatusReason': 'N/A', 'updateStatus': 'PASS', 'clonedStatusfailReason': 'N/A'}", "{'clonedRadar': 40145054, 'clonedStatus': 'PASS', 'clonedRadarFinalStatus': 'PASS', 'updatedFailedReason': 'N/A', 'clonedRadarFinalStatusReason': 'N/A', 'updateStatus': 'PASS', 'clonedStatusfailReason': 'N/A'}"]}
list = []
radarlist = []
for key, value in data.items():
    temp = [key,value]
    list.append(temp)

radar = ast.literal_eval(list[2][1][0])

for key, value in radar.items():
    temp = [key,value]
    radarlist.append(temp)

for item in radarlist:
    print(item)

您收到的错误告诉您单引号无效。在尝试加载之前,您可以将其替换为双引号:

>>> [json.loads(x.replace("'", '"')) for x in data['clonedRadarsdetailslist']]

[{'clonedRadar': 40145048, 'clonedStatus': 'PASS', 'clonedRadarFinalStatus': 'PASS', 'updatedFailedReason': 'N/A', 'clonedRadarFinalStatusReason': 'N/A', 'updateStatus': 'PASS', 'clonedStatusfailReason': 'N/A'},
 {'clonedRadar': 40145054, 'clonedStatus': 'PASS', 'clonedRadarFinalStatus': 'PASS', 'updatedFailedReason': 'N/A', 'clonedRadarFinalStatusReason': 'N/A', 'updateStatus': 'PASS', 'clonedStatusfailReason': 'N/A'}]
另外,对正在循环的容器进行变异也是个坏主意。不要那样做


根据要求编辑:一个“完整解决方案”

import datetime
import json

data = {
  'orgRadar': u'37125110',
  'created_on': datetime.datetime(2018, 5, 10, 22, 48, 46, 979953),
  'clonedRadarsdetailslist': [
    "{'clonedRadar': 40145048, 'clonedStatus': 'PASS', 'clonedRadarFinalStatus': 'PASS', 'updatedFailedReason': 'N/A', 'clonedRadarFinalStatusReason': 'N/A', 'updateStatus': 'PASS', 'clonedStatusfailReason': 'N/A'}",
    "{'clonedRadar': 40145054, 'clonedStatus': 'PASS', 'clonedRadarFinalStatus': 'PASS', 'updatedFailedReason': 'N/A', 'clonedRadarFinalStatusReason': 'N/A', 'updateStatus': 'PASS', 'clonedStatusfailReason': 'N/A'}"
    ]}

data['clonedRadarsdetailslist'] = [json.loads(x.replace("'", '"'))
  for x in data['clonedRadarsdetailslist']]

print(data)

您收到的错误告诉您单引号无效。在尝试加载之前,您可以将其替换为双引号:

>>> [json.loads(x.replace("'", '"')) for x in data['clonedRadarsdetailslist']]

[{'clonedRadar': 40145048, 'clonedStatus': 'PASS', 'clonedRadarFinalStatus': 'PASS', 'updatedFailedReason': 'N/A', 'clonedRadarFinalStatusReason': 'N/A', 'updateStatus': 'PASS', 'clonedStatusfailReason': 'N/A'},
 {'clonedRadar': 40145054, 'clonedStatus': 'PASS', 'clonedRadarFinalStatus': 'PASS', 'updatedFailedReason': 'N/A', 'clonedRadarFinalStatusReason': 'N/A', 'updateStatus': 'PASS', 'clonedStatusfailReason': 'N/A'}]
另外,对正在循环的容器进行变异也是个坏主意。不要那样做


根据要求编辑:一个“完整解决方案”

import datetime
import json

data = {
  'orgRadar': u'37125110',
  'created_on': datetime.datetime(2018, 5, 10, 22, 48, 46, 979953),
  'clonedRadarsdetailslist': [
    "{'clonedRadar': 40145048, 'clonedStatus': 'PASS', 'clonedRadarFinalStatus': 'PASS', 'updatedFailedReason': 'N/A', 'clonedRadarFinalStatusReason': 'N/A', 'updateStatus': 'PASS', 'clonedStatusfailReason': 'N/A'}",
    "{'clonedRadar': 40145054, 'clonedStatus': 'PASS', 'clonedRadarFinalStatus': 'PASS', 'updatedFailedReason': 'N/A', 'clonedRadarFinalStatusReason': 'N/A', 'updateStatus': 'PASS', 'clonedStatusfailReason': 'N/A'}"
    ]}

data['clonedRadarsdetailslist'] = [json.loads(x.replace("'", '"'))
  for x in data['clonedRadarsdetailslist']]

print(data)

像下面这样使用
eval
怎么样:

import datetime, json
data = {'orgRadar': u'37125110', 'created_on': datetime.datetime(2018, 5, 10, 22, 48, 46, 979953), 'clonedRadarsdetailslist': ["{'clonedRadar': 40145048, 'clonedStatus': 'PASS', 'clonedRadarFinalStatus': 'PASS', 'updatedFailedReason': 'N/A', 'clonedRadarFinalStatusReason': 'N/A', 'updateStatus': 'PASS', 'clonedStatusfailReason': 'N/A'}", "{'clonedRadar': 40145054, 'clonedStatus': 'PASS', 'clonedRadarFinalStatus': 'PASS', 'updatedFailedReason': 'N/A', 'clonedRadarFinalStatusReason': 'N/A', 'updateStatus': 'PASS', 'clonedStatusfailReason': 'N/A'}"]}

data['clonedRadarsdetailslist'] = eval(data['clonedRadarsdetailslist'][0])
print data

像下面这样使用
eval
怎么样:

import datetime, json
data = {'orgRadar': u'37125110', 'created_on': datetime.datetime(2018, 5, 10, 22, 48, 46, 979953), 'clonedRadarsdetailslist': ["{'clonedRadar': 40145048, 'clonedStatus': 'PASS', 'clonedRadarFinalStatus': 'PASS', 'updatedFailedReason': 'N/A', 'clonedRadarFinalStatusReason': 'N/A', 'updateStatus': 'PASS', 'clonedStatusfailReason': 'N/A'}", "{'clonedRadar': 40145054, 'clonedStatus': 'PASS', 'clonedRadarFinalStatus': 'PASS', 'updatedFailedReason': 'N/A', 'clonedRadarFinalStatusReason': 'N/A', 'updateStatus': 'PASS', 'clonedStatusfailReason': 'N/A'}"]}

data['clonedRadarsdetailslist'] = eval(data['clonedRadarsdetailslist'][0])
print data


我猜您不是真的想“删除引号”,而是想
json.loads(radardeails)
。您能提供当前结果和所需的结果吗?@Бааааааааааааааresult@jordanm-我尝试了你的建议,如数据中的雷达详细信息['clonedRadarsdetailslist']:数据['clonedRadarsdetailslist']=json.loads(radardDetails)但这会引发一个错误
ValueError:需要属性名:第1行第2列(char 1)
你能发布一个出现在屏幕上的例子吗?预期的和实际的看起来很相似……为什么我要猜测问题出在哪里?!我猜你不是真的想“删除引号”,而是想
json.load(radardeails)
。您能提供当前结果和所需结果吗?@Бааааааааааааа107result@jordanm-我尝试了您的建议,将数据['clonedRadarsdetailslist']中的雷达详细信息作为
:数据['clonedRadarsdetailslist']=json.loads(雷达详细信息)
但这会引发一个错误
ValueError:Expecting property name:line 1 column 2(char 1)
您可以发布屏幕上显示的示例吗?预期的和实际的看起来很相似……为什么我必须猜测问题出在哪里?!我猜用户实际上不想删除任何引号(因此不需要该行),但与打印输出的引号字符的外观相混淆。他提供的数据不包含任何双引号字符。@Cillian-您的代码抛出一个错误
TypeError:expected string或buffer
,它对您有效吗?@PenguinBrian-不,有双引号字符,
数据中的每个元素[clonedRadarsdetailslist]
有引号。此解决方案不正确。loads接受一个字符串并将其转换为python数据,但我们已经有python数据。只有clonedRadarsdetailslist字段需要此处理(对于列表中的项).Python打印带有双引号的字符串,因为它是一个字符串。字符串本身不包含双引号。我猜用户实际上不想去掉任何引号(因此不需要该行),但与打印输出的引号字符的外观相混淆。他提供的数据不包含任何双引号字符。@Cillian-您的代码抛出一个错误
TypeError:expected string或buffer
,它对您有效吗?@PenguinBrian-不,有双引号字符,
数据中的每个元素[clonedRadarsdetailslist]
周围有引号。此解决方案不正确。loads获取字符串并将其转换为python数据,