#python #zeep
Вопрос:
Это сбивало меня с толку весь день. Я пытаюсь извлечь содержимое с сервера SOAP через Zeep, но мои результаты дублируют каждую строку. Моя проблема, похоже, возникает, когда я пытаюсь вытащить Lat/Long. Чего мне не хватает?
{
'stationID': '1',
'Country': 'United States',
'Port': [
{
'portNumber': '1',
'stationName': ABC',
'Geo': {
'Lat': '34',
'Long': '-119'
},
}
],
'Pricing': [
{
'minPrice': 0.0,
'maxPrice': 0.0
}
],
'numPorts': 1,
},
{
'stationID': '2,
'Country': 'United States',
'Port': [
{
'portNumber': '1',
'stationName': 'DEF,
'Geo': {
'Lat': '35',
'Long': '-120'
},
}
],
'Pricing': [
{
'minPrice': 0.0,
'maxPrice': 0.0,
}
],
'numPorts': 1,
}
На данный момент я хотел бы вытащить StationID, stationName, Lat и Long.
from zeep import Client
from zeep.wsse.username import UsernameToken
s = []
x = []
for (i, d) in enumerate(stationData.stationData):
row_station = [str(d.stationID)]
for (p, pt) in enumerate(d.PortID):
port = [str(pt.stationName)]
for (g, ge) in enumerate(pt.Geo):
c = stationData.stationData[i].PortID[p].Geo
x = [str(c.Lat), str(c.Long)]
s.append(row_station)
s.extend(port)
s.extend(x)
ИЗМЕНИТЬ: Пытаюсь сделать форматирование приведенных ниже таблиц более читабельным.
Current Output
|StationID | stationName | Lat| Long|
|:--------- | :-----------|:---|:----|
|1 | ABC | 34 | -119|
|1 | ABC | 34 | -119|
|2 | DEF | 35 | -120|
|2 | DEF | 35 | -120|
Desired Output
|StationID | stationName | Lat| Long|
|:--------- | :-----------|:---|:----|
|1 | ABC | 34 | -119|
|2 | DEF | 35 | -120|
Комментарии:
1. Я не вижу здесь никакого МЫЛА
Ответ №1:
Я все понял.
for (g, ge) in enumerate(pt.Geo):
В приведенной выше строке не было необходимости.
for (i, d) in enumerate(stationData.stationData):
row_station = [str(d.stationID)]
for (p, pt) in enumerate(d.PortID):
port = [str(pt.stationName)]
c = stationData.stationData[i].PortID[p].Geo
x = [str(c.Lat), str(c.Long)]
s.append(row_station)
s.extend(port)
s.extend(x)