gpt4 book ai didi

python - 评估列表python中的变量

转载 作者:太空宇宙 更新时间:2023-11-03 13:31:07 24 4
gpt4 key购买 nike

我正在使用 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'>

所以当tag1或tag2在a中时,if条件不执行。

我好像不能让它进入if条件。有什么建议吗?

最佳答案

事实证明,下面的答案在这里不起作用,因为“reader”是一个对象而不是文件,而 a 已经是一个列表。对您来说更好的解决方案可能是将“if in”更改为 if any(tag1 == tag.epc for tag in a)。在这种情况下,打印会产生误导,因为看起来列表实际上充满了打印为字符串但不会与字符串进行比较的对象。

我将保留较早的答案,因为它可能对遇到类似问题的人有所帮助。

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

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

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

尝试

import ast
a = ast.literal_eval(reader.read())

这将尝试将 .read() 的结果解释为列表。如果这对您不起作用,请查看 regular expressions .

关于python - 评估列表python中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47189048/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com