在列表python中计算if变量

在列表python中计算if变量,python,list,if-statement,Python,List,If Statement,我正在使用RFID阅读器扫描多个RFID标签。读数被放入一个列表中。我正在检查读数中是否有标签。使用“if-in”方法对我不起作用 import mercury import time reader = mercury.Reader("tmr:///dev/ttyUSB0") reader.set_region("EU3") reader.set_read_plan([1], "GEN2") tag1 = 'E2004005730702602190360B' tag2 = 'E2004005

我正在使用RFID阅读器扫描多个RFID标签。读数被放入一个列表中。我正在检查读数中是否有标签。使用“if-in”方法对我不起作用

import mercury
import time

reader = mercury.Reader("tmr:///dev/ttyUSB0")
reader.set_region("EU3")
reader.set_read_plan([1], "GEN2")

tag1 = 'E2004005730702602190360B'
tag2 = 'E20040057307026421903619'

while True:
    a = reader.read()
    print (a)
    print(type(a))
    if tag1 in a:
            print('tag1')
            time.sleep(0.2)
            break
    if tag2 in a:
            print('tag2')
            time.sleep(0.2)
            break
    time.sleep(0.2)
我的终端输出为:

['E20040057307026421903619', 'E2004005730702602190360B']
<type 'list'>
['E200400573070264219003619','E200400573070202602190360B']
因此,当tag1或tag2位于a中时,不会执行if条件


我似乎无法让它进入if状态。有什么建议吗

下面的答案在这里不起作用,因为“reader”是一个对象而不是一个文件,
a
已经是一个列表了。更好的解决方案可能是将“if in”更改为
if any(对于A中的标记,tag1==tag.epc)
。在这种情况下,打印是有误导性的,因为列表中似乎实际填充了打印为字符串但不等于字符串的对象

我将留下前面的答案,因为它可能对有类似问题的人有所帮助

=======================================================================

假设“reader”是一个文件,使用
reader.read()
不会返回列表。它返回一个字符串。您不会得到解释器错误,因为字符串是可写的,但是您也不会得到预期的结果

编辑:如果string1是string2的子字符串,则在string2中使用
string1将返回True。但是,仍然需要小心,因为其他有效的操作(如
a[0]
)将返回意外的结果

试一试


这将尝试将
.read()
的结果解释为列表。如果这不适合您,请查看。

您应该打印列表对象a(reader.read())的上下文 它将告诉您内容或目标对象,然后了解关于(if语句)的比较是什么

试着按照以下思路:

tag1 = b'E2004005730702602190360B'
tag2 = b'E20040057307026421903619'

a = reader.read()
for tag in a:
    if tag1 == tag.epc:
        print('tag1')

什么是阅读器?您能同时打印
类型(a)
吗?并将控制台的输出粘贴为文本而不是图像(因此我们可以尝试复制),感谢您的编辑,非常有用,但是您可以添加
print(a[0],type(a[0])
以确保项目的类型和它们是什么?(对不起,我应该在前面询问)如果读取器返回字符串,那么
如果
中的tag1起作用(子字符串测试)@Jean-Françoisfar你是对的。我做了一个快速测试来验证我的答案,但我在这么做的时候犯了一个错误。我本应该只查找文档。这种问题很难解决,因为我们没有OP拥有的硬件,所以从OP获得最大限度的信息很重要。我尝试了,但忘记了一些要点。让我们等待他的新评论/编辑。
tag1 = b'E2004005730702602190360B'
tag2 = b'E20040057307026421903619'

a = reader.read()
for tag in a:
    if tag1 == tag.epc:
        print('tag1')