【问题标题】:Searching a blob for a string在 blob 中搜索字符串
【发布时间】:2014-10-16 13:44:17
【问题描述】:

我有一个从数据库加载的 base64 blob。我已经对其进行了解码,现在需要在其中搜索一个字符串。 Blob 可以并且确实包含二进制(不可打印)字节。

到目前为止我的代码很简单

for row in cursor:
        b = base64.standard_b64decode(row[2])

所以我需要找到字符串'xyx'在b中的位置

【问题讨论】:

    标签: python string search


    【解决方案1】:

    “二进制 blob”在 python 中只是一个字符串,所以你可以使用str.index:

    i= b.index('xyx')
    

    i 成为'xyx'b 中位置的从0 开始的索引的值。请注意,这将计算字节数,而不是字符数。

    你也可以使用str.find,如果你不想在'xyx' not in b的情况下引发异常

    【讨论】:

    • str.find('xyz') 给我 UnicodeDecodeError: 'ascii' codec can't decode byte 0xaa in position 17: ordinal not in range(128)
    • @Paul 你确定你不是想decode 某个地方的字符串吗? indexfind 不应该尝试解码字符。请尝试以下操作:("".join(map(chr,range(256)))).index('\xff')
    猜你喜欢
    • 2016-11-30
    • 1970-01-01
    • 2019-10-06
    • 2012-07-23
    • 1970-01-01
    相关资源
    最近更新 更多