我有一个以 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
?
答案 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所说的那样解码字符串