我正在编译时发生类型错误

时间:2019-03-24 16:34:28

标签: python-3.x

我正在编译时遇到此错误。我已经搜索过,但是没有解决方案不起作用

import requests
import tqdm

BASE_URL="http://www.buzzfeed.com/api/v2/feeds/index"


with open("G:\clickbait-detector-master\data/clickbait.txt", "a+") as outfile:

    for page in tqdm.tqdm(range(0, 30)):
        response = requests.get(BASE_URL, { "p": page }).json()
        titles = [each["title"].encode("ascii", "ignore") for each in response["buzzes"]]
        outfile.write("\n" + "\n".join(titles))

我在编译后得到输出

TypeError                                 Traceback (most recent call last)
<ipython-input-5-5231e1171fef> in <module>()
     11         response = requests.get(BASE_URL, { b"p": page }).json()
     12         titles = [each["title"].encode("ascii", "ignore") for each in response["buzzes"]]
---> 13         outfile.write("\n" + "\n".join(titles))

TypeError: sequence item 0: expected str instance, bytes found

1 个答案:

答案 0 :(得分:0)

此处each["title"].encode("ascii", "ignore")产生的列表类型为bytes,而这里"\n".join(titles)则试图将join放在str上ing。无法将bytes对象和字符串连接在一起,因此会出现错误。

如果您想在加入后生成bytes对象,请执行以下操作:

"\n".join(titles)

但是随后您需要以二进制模式打开文件。否则,不要encode您的数据。