Python bitand (&) 与

标签 python bitwise-operators logical-and

大家好,我有这部分代码:

for line in response.body.split("\n"):
    if line != "": 
        opg = int(line.split(" ")[2])
        opc = int(line.split(" ")[3])
        value = int(line.split(" ")[5])
        if opg==160 & opc==129:
            ret['success'] = "valore: %s" % (value)
            self.write(tornado.escape.json_encode(ret))

我有一系列的线型

1362581670        2459546910990453036    156     0     30      0

我只想取第三个和第四个元素分别为 160 和 129 的行。 此代码不起作用。我需要做一些类型转换吗?我认为 opg==160 正在努力比较 int 和 int...

最佳答案

您对运算符感到困惑; and is the correct boolean test , &binary bitwise operator相反:

if opg == 160 and opc == 129:

作为数字运算符,& 运算符有一个 higher precedence than comparison operators ,而 bool 运算符的优先级较低。因此,表达式 opg == 160 & opc == 129 被解释为 opg == (160 & opc) == 129,这可能不是您想要的。

您可以稍微简化您的代码:

for line in response.body.splitlines():
    if line:
        line = map(int, line.split())
        opg, opc, value = line[2], line[3], line[5]
        if opg == 160 and opc == 129:
            ret['success'] = "valore: %s" % (value)
            self.write(tornado.escape.json_encode(ret))

关于Python bitand (&) 与,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15251121/

相关文章:

c++ - 使用按位运算符设置移位位

arrays - C 如何解析 char 数组中的 int 和 char?

python - 数据帧上的 Dask 方法返回应用方法结果的字典

javascript - javascript中是否有XNOR运算符

python - 如何使用 BeautifulSoup 和 Python 获取属性值?

java - 短路与非短路运算符

c - ||, && C 中的运算符

java - 尝试从当前日期计算出生日期时,二元运算符 && 的操作数类型错误

python - 如何使用python将网页文本内容保存为文本文件

python - 在 git 中开发整个 Zope&Plone 应用程序(去中心化且无 ZMI)