После нескольких операций, я получить список шаблона:Поиск кортежи для частичной строки Спички использования результатов XML PARSING
[(u'DAY1 KWH', u'300.000000'),
(u'DAY2 KWH', u'300.000000'),
(u'DAY3 KWH', u'300.000000'),
(u'DAY4 KWH', u'300.000000'),
(u'DAY5 KWH', u'300.000000'),
(u'DAY6 KWH', u'300.000000'),
(u'DAY7 KWH', u'300.000000'),
(u'DAY8 KWH', u'300.000000'),
(u'DAY9 KWH', u'300.000000'),
(u'DAY10 KWH', u'300.000000'),
(u'DAY11 KWH', u'300.000000'),
(u'DAY12 KWH', u'300.000000'),
(u'DAY13 KWH', u'300.000000'),
(u'DAY14 KWH', u'300.000000'),
...
Не все элементы содержат слово «день» или «KWH» - в факт, что они могут быть измерениями использования природного газа в течение месяца или использования воды в течение недели и т. д. Я бы хотел извлечь все значения «день» и поместить их в один список, всю неделю, значения и поместить их в другой список, а все значения «месяц» - в третий список. Конечная цель состоит в том, чтобы иметь возможность отображать ежедневное, еженедельное и ежемесячное использование полезности. Имейте в виду, что это тестовые значения.
Ни один из пяти различных методов, которые я прокомментировал, фактически работал, но каждая попытка была результатом чтения различных потоков переполнения стека.
Я знаю, что код можно было бы сделать более эффективным/быстрым, поэтому, если у вас есть предложения по оптимизации, не стесняйтесь добавлять их также. Ваша помощь очень ценится!
import urllib
import urllib2
from xml.dom import minidom
import matplotlib.pyplot as plt
def main():
path = "http://128.226.6.214/bacrest/bacnet_device_70200/"
BACrest = 'urn:BACrestService'
xlink = 'http://www.w3.org/1999/xlink'
dom = minidom.parse(urllib.urlopen(path))
values = []
descriptions = []
for node in dom.getElementsByTagNameNS(BACrest, 'ChildNode'):
href = node.getAttributeNS(xlink, 'href')
descriptionDomain = href + '/Description'
descriptionSubDom = minidom.parse(urllib.urlopen(descriptionDomain))
descriptionElements = descriptionSubDom.getElementsByTagNameNS(BACrest, 'return')
descriptions.append(descriptionElements)
valueDomain = href + '/Value'
valueSubDom = minidom.parse(urllib.urlopen(valueDomain))
valueElements = valueSubDom.getElementsByTagNameNS(BACrest, 'return')[0].firstChild.data
values.append(valueElements)
combination = zip(descriptions,values)
Решение Попытки
#print filter(lambda x: 'DAY1 ' in x, combination)
#dayInfo = []
#for sublist in combination:
#if 'DAY1 ' in sublist:
#dayInfo.append(sublist)
#print dayInfo
#dayInfo = [s for s in combination if 'DAY1 ' in s]
#print dayInfo
#dayInfo = [i for i,v in combination if i.startswith('DAY1') in i]
#print dayInfo
#dayInfo = []
#if any('DAY1 ' in x for x in combination):
#dayInfo.append(x)
#print dayInfo
main()
Awesome! Ниже, если я использовал dayInfo.append ([desc, val]), и он работал как шарм –