-5

xml ファイルから 2 つの変数があります。

編集:*申し訳ありません。間違った値を貼り付けました * x="00 25 9E B8 B9 19 " y="F0 00 00 25 9E B8 B9 19 "

ステートメントを使用するif x in y:と何も起こらない

しかし、使用するif "00 25 9E B8 B9 19 " in y:と結果が得られます

何か案が?


完全なコードを追加しています。

import xml.etree.ElementTree as ET

tree =ET.parse('c:/sw_xml_test_4a.xml')
root=tree.getroot()

for sw in root.findall('switch'):



    for switch in root.findall('switch'):

        if sw[6].text.rstrip() in switch.find('GE01').text:
            print switch[0].text

        if sw[6].text.strip() in switch.find('GE02').text.strip():
            print switch[0].text

        if sw[6].text.strip() in switch.find('GE03').text.strip():
            print switch[0].text

        if sw[6].text.strip() in switch.find('GE04').text.strip():
            print switch[0].text    

xml ファイルの詳細。

- <switch>
  <ci_adi>"aaa_bbb_ccc"</ci_adi> 
  <ip_adress>10.10.10.10</ip_adress> 
  <GE01>"F0 00 00 25 9E 2C BC 98 "</GE01> 
  <GE02>"80 00 80 FB 06 C6 A1 2B "</GE02> 
  <GE03>"F0 00 00 25 9E B8 BB AA "</GE03> 
  <GE04>"F0 00 00 25 9E B8 BB AA "</GE04> 
  <bridge_id>"00 25 9E B8 BB AA "</bridge_id> 
  </switch>
4

3 に答える 3

4
>>> x = "00 25 9E 2C BC 8B"
>>> y = "F0 00 00 25 9E B8 B9 19"
>>> x in y
False
>>> "00 25 9E 2C BC 8B " in y
False

どのように正確に結果を得ていますか?

in何をチェックしているのか説明しましょう。

inの値全体が の値x内のどこかに含まれているかどうかをチェックしていますy。ご覧のとおり、 の値x全体が に完全に含まれているわけではありませんy

ただし、いくつかの要素は次のxとおりです。おそらく、あなたがやろうとしていることは次のとおりです。

>>> x = ["00", "25", "9E", "2C", "BC", "8B"]
>>> y = "F0 00 00 25 9E B8 B9 19"
>>> for item in x:
    if item in y:
        print item + " is in " + y


00 is in F0 00 00 25 9E B8 B9 19
25 is in F0 00 00 25 9E B8 B9 19
9E is in F0 00 00 25 9E B8 B9 19
于 2012-09-09T17:00:47.470 に答える
1

in および not in の演算子は、コレクションのメンバーシップをテストします。x in s は、x がコレクション s のメンバーである場合は true と評価され、それ以外の場合は false と評価されます。文字列の場合、文字列 x 全体が y の部分文字列である場合は True を返し、そうでない場合は False を返します。

于 2012-09-09T17:02:22.427 に答える
0

あなたの質問の値の混同を除いて、これはあなたが望むように機能するようです:

sxml="""\
<switch>
  <ci_adi>"aaa_bbb_ccc"</ci_adi> 
  <ip_adress>10.10.10.10</ip_adress> 
  <GE01>"F0 00 00 25 9E 2C BC 98 "</GE01> 
  <GE02>"80 00 80 FB 06 C6 A1 2B "</GE02> 
  <GE03>"F0 00 00 25 9E B8 BB AA "</GE03> 
  <GE04>"F0 00 00 25 9E B8 BB AA "</GE04> 
  <bridge_id>"00 25 9E B8 BB AA "</bridge_id> 
</switch>"""

tree=et.fromstring(sxml)
x="80 00 80 FB 06 C6 A1 2B"    # Note: I used a value of x I could see in the data; 
                               # your value of  x="00 25 9E B8 B9 19 " is not present...

for el in tree:
    print '{}: {}'.format(el.tag, el.text)
    if x in el.text:
        print 'I found "{}" by gosh at {}!!!\n'.format(x,el.tag)
于 2012-09-09T18:54:10.927 に答える