【问题标题】:Python ignore \x00\x00\x00\x00 [closed]Python忽略\x00\x00\x00\x00 [关闭]
【发布时间】:2014-08-25 17:34:07
【问题描述】:

我正在解析一个项目列表,\x00\x00\x00\x00... 在其中。我想跳过这个。

我尝试了以下代码:

if "\x00" in item:
     pass

这不起作用,它仍然会读取它。如何忽略 \x00?

完整代码在这里:https://github.com/codywd/NetGUI/blob/master/main.py 第 281-292 行是我尝试跳过它的地方。

【问题讨论】:

  • 您需要为我们提供更多背景信息,最好是可重现的样本。 这不起作用不足以描述问题。
  • 完整的项目文件不是可重现的样本。
  • 我从 github 发布了整个程序。希望这能完整显示代码。
  • 随机猜测:你试过用continue代替pass吗?
  • 明确一点:pass 完全没有任何作用。如果你有if a: b(); else: pass,你也可以完全删除else 子句。如果你有if a: pass; else: b(),你也可以写if not a: b()

标签: python csv python-3.x


【解决方案1】:

Pass 表示没有任何反应。它根本不会影响你的代码,唯一真正使用它的地方是如果你想执行一个条件但什么都不做。

例如,在这里,pass 什么都不做,仍然会打印 hello。

if True:
    pass
    print "hello"

这里,pass 是 except 的占位符。 Python 需要缩进的行来做一些事情,但如果你不想对 except 做任何事情,你可以使用 pass

try:
    int(5) + str(5)
except:
    pass

Continue 是您想要的,因为这意味着继续下一次迭代,不要继续执行其余代码。

r = csv.reader(tsv, dialect='excel-tab')
aps = {}
i = 0
for row in r:
    network = row[2]
    print(network)
    if network == "":
        continue
    elif "\x00" in network:
        continue
    else:
        aps["row" + str(i)] = self.APStore.append([network, "", "", ""])

编辑:

如果您想执行aps[...] 行,为什么不这样做:

if not "\x00" in network:
    aps["row" + str(i)] = self.APStore.append([network, "", "", ""])

【讨论】:

  • 这意味着其余的行处理被跳过,而 OP 唯一想要跳过的是 aps[...] = ... 分配。
  • 哦,我明白了。我的错误,我在编辑中添加了另一个选项。
  • if network and "\x00" not in network: 更pythonic; CPython 编译器重写了这一行,因为它只使用了一个运算符而不是两个。您还需要测试空值。
  • “如果网络中没有“/x00””也不起作用:(
  • 定义“不起作用”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-09
  • 2023-03-16
  • 2019-09-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多