如何检查特定字符串是否在字节变量的变量中

时间:2016-08-04 21:30:53

标签: python string casting

我有一个以 byte 形式在套接字上收到的变量,我需要检查是否包含特定的字符串。

例如:

>>> a="foo\r\nbar"
>>> print(str(a.find("\r\n")))
3

这样可以正常工作,但是如果第一个变量a被转换为字节,则它将不再起作用。

>>> a=b"foo\r\nbar"
>>> print(str(a.find("\r\n")))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: a bytes-like object is required, not 'str'

如果我再次将变量a转换为字符串,它也无效。

>>> print(str(str(a).find("\r\n")))
-1

如何在字节变量中检查\r\n

3 个答案:

答案 0 :(得分:1)

你必须将decode你的bytes对象变成一个字符串,因为它不会起作用 请尝试以下代码:

>>> a=b"foo\r\nbar"
>>> print(a.decode("utf-8").find("\r\n"))
3

您的varibale a已编码,这就是为什么它无法与"\r\n"之类的unicode字符串进行比较的原因。

答案 1 :(得分:1)

也搜索一个字节字符串(如错误所示!):

// vim: syntax=JSX
import React from 'react';

export default class MyClass extends React.Component {
  render() {
    return (
      <a href="google.com">Let's head to google.com</a>
    );
  }
}

答案 2 :(得分:1)

>>> a = b"foo\r\nbar"
>>> print(a.find(b"\r\n"))
3

或者您可以像TheGirrafish所说的那样解码字符串