使用python 2.7.5和以下字符串。我想用以下代码求和。有人能引导我朝着正确的方向前进吗?感谢
<msg><src>CC128-v0.15</src><dsb>01068</dsb><time>09:19:01</time><tmprF>68.9</tmprF><sensor>0</sensor><id>00077</id><type>1</type><ch1><watts>00226</watts></ch1><ch2><watts>00189</watts></ch2></msg>
try:
watts_ex = re.compile('<watts>([0-9]+)</watts>')
temp_ex = re.compile('<tmprF>([\ ]?[0-9\.]+)</tmprF>')
time_ex = re.compile('<time>([0-9\.\:]+)</time>')
watts = str(int(watts_ex.findall(data)[0]))
temp = temp_ex.findall(data)[0].strip()
time = time_ex.findall(data)[0]
except:
sys.stderr.write("Could not get details from device")
sys.exit()
# Replace format string
format = format.replace("{{watts}}", watts)
format = format.replace("{{time}}", time)
format = format.replace("{{temp}}", temp)
print format
if __name__ == "__main__":
main()
""" output is 09:19:01:, 226 watts, 68.9F (watts should = 415 watts """
答案 0 :(得分:0)
这看起来像一个类似XML的语言,我强烈建议使用XML库而不是正则表达式来解析它。
代码中的问题是这一部分:
watts = str(int(watts_ex.findall(data)[0]))
您刚刚使用0
中的结果findall()
,我想您想要这样的内容:
watts = str(sum(int(w) for w in watts_ex.findall(data)))