いくつかの操作の後、パターンのリストを取得します。
[(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」という単語が含まれているわけではありません。実際には、その月の天然ガスの使用量や 1 週間の水の使用量などの測定値である可能性があります。日」の値を 1 つのリストに配置し、すべての「週」の値を別のリストに配置し、すべての「月」の値を 3 番目のリストに配置します。最終目標は、毎日、毎週、毎月のユーティリティの使用状況をグラフ化できるようにすることです。これらはテスト値であることに注意してください。
私がコメントアウトした 5 つの異なる方法はどれも実際には機能しませんでしたが、それぞれの試みは異なるスタック オーバーフロー スレッドを読み取った結果でした。
コードをより効率的/高速にできることは間違いありません。最適化に関する提案があれば、遠慮なく追加してください。あなたの助けは大歓迎です!
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()