Python 3 - TypeError: a bytes-like object is required, not 'str'
Python 3 - TypeError: a bytes-like object is required, not 'str'
我正在学习 Udacity 的课程,但在尝试确定此网站的结果 returns 是真还是假时遇到了一些问题。我用下面的代码得到 TypeError。
from urllib.request import urlopen
#check text for curse words
def check_profanity():
f = urlopen("http://www.wdylike.appspot.com/?q=shit")
output = f.read()
f.close()
print(output)
if "b'true'" in output:
print("There is a profane word in the document")
check_profanity()
输出打印 b'true'
,我不太确定 'b' 来自哪里。
在python中3个字符串默认为unicode
。 b'true'
中的 b
表示该字符串是字节串而不是 unicode。如果你不想这样,你可以这样做:
from urllib.request import urlopen
#check text for curse words
def check_profanity():
with urlopen("http://www.wdylike.appspot.com/?q=shit") as f:
output = f.read().decode('utf-8')
if output:
if "true" in output:
print("There is a profane word in the document")
check_profanity()
使用 with
将自动关闭 urlopen
连接。
我正在学习 Udacity 的课程,但在尝试确定此网站的结果 returns 是真还是假时遇到了一些问题。我用下面的代码得到 TypeError。
from urllib.request import urlopen
#check text for curse words
def check_profanity():
f = urlopen("http://www.wdylike.appspot.com/?q=shit")
output = f.read()
f.close()
print(output)
if "b'true'" in output:
print("There is a profane word in the document")
check_profanity()
输出打印 b'true'
,我不太确定 'b' 来自哪里。
在python中3个字符串默认为unicode
。 b'true'
中的 b
表示该字符串是字节串而不是 unicode。如果你不想这样,你可以这样做:
from urllib.request import urlopen
#check text for curse words
def check_profanity():
with urlopen("http://www.wdylike.appspot.com/?q=shit") as f:
output = f.read().decode('utf-8')
if output:
if "true" in output:
print("There is a profane word in the document")
check_profanity()
使用 with
将自动关闭 urlopen
连接。