python中的字符串变量比较

时间:2012-09-09 16:42:43

标签: python string

我有一个来自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>

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

运营商是否参与集合成员资格测试。如果x是集合s的成员,则x in s的计算结果为true,否则为false。对于字符串,如果整个字符串x是y的子字符串,则转换为返回True,否则返回False。

答案 2 :(得分: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)