この質問は、以前の質問の補足です。さらに背景が必要な場合は、元の質問をここで確認できます。
lxml xpath コマンドから取得したデータを使用して Python リストに入力します。
@ ihor-kaharlichenko の優れた提案(元の質問から)を修正したコードに組み込みました。
from lxml import etree as ET
from datetime import datetime
xmlDoc = ET.parse('http://192.168.1.198/Bench_read_scalar.xml')
response = xmlDoc.getroot()
tags = (
'address',
'status',
'flow',
'dp',
'inPressure',
'actVal',
'temp',
'valveOnPercent',
)
dmtVal = []
for dmt in response.iter('dmt'):
val = [str(dmt.xpath('./%s/text()' % tag)) for tag in tags]
val.insert(0, str(datetime.now())) #Add timestamp at beginning of each record
dmtVal.append(val)
for item in dmtVal:
str(item).strip('[')
str(item).strip(']')
str(item).strip('"')
この最後のブロックは、私が問題を抱えている場所です。私が取得しているデータはdmtVal
次のようになります。
[['2012-08-16 12:38:45.152222', "['0x46']", "['0x32']", "['1.234']", "['5.678']", "['9.123']", "['4.567']", "['0x98']", "['0x97']"], ['2012-08-16 12:38:45.152519', "['0x47']", "['0x33']", "['8.901']", "['2.345']", "['6.789']", "['0.123']", "['0x96']", "['0x95']"]]
ただし、データを次のように表示したいのです。
[['2012-08-16 12:38:45.152222', '0x46', '0x32', '1.234', '5.678', '9.123', '4.567', '0x98', '0x97'], ['2012-08-16 12:38:45.152519', '0x47', '0x33', '8.901', '2.345', '6.789', '0.123', '0x96', '0x95']]
これはかなり単純な文字列ストリッピング ジョブだと思い、元のイテレーション(dmtVal
最初に入力された場所)内でコードを試しましたが、うまくいかなかったため、上記のようにループの外でストリッピング操作を行いました。まだ動作していません。私はある種のnoob-errorを作っていると思っていますが、それを見つけることができません。どんな提案でも大歓迎です!
迅速かつ有用な回答をくださった皆様に感謝します。修正されたコードは次のとおりです。
from lxml import etree as ET
from datetime import datetime
xmlDoc = ET.parse('http://192.168.1.198/Bench_read_scalar.xml')
print '...Starting to parse XML nodes'
response = xmlDoc.getroot()
tags = (
'address',
'status',
'flow',
'dp',
'inPressure',
'actVal',
'temp',
'valveOnPercent',
)
dmtVal = []
for dmt in response.iter('dmt'):
val = [' '.join(dmt.xpath('./%s/text()' % tag)) for tag in tags]
val.insert(0, str(datetime.now())) #Add timestamp at beginning of each record
dmtVal.append(val)
どちらが得られますか:
...Starting to parse XML nodes
[['2012-08-16 14:41:10.442776', '0x46', '0x32', '1.234', '5.678', '9.123', '4.567', '0x98', '0x97'], ['2012-08-16 14:41:10.443052', '0x47', '0x33', '8.901', '2.345', '6.789', '0.123', '0x96', '0x95']]
...Done
みんな、ありがとう!