簡體   English   中英

如何在python中刪除字符串周圍的引號?

[英]How to remove quotes around a string in python?

我正在嘗試刪除data[clonedRadarsdetailslist]存在的所有元素的引號,如下所示,我看到2個問題,有人可以提供解決此問題的指南嗎?

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'}]}

您收到的錯誤告訴您單引號無效。 您可以在嘗試加載之前用雙引號替換它們:

>>> [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)

在線運行

您有一個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)

像這樣使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM