0

抱歉,这很简单:

Python 的新手以及与 Twitter 的流 API 的 Python 接口,尝试在 Python 3.2 上使用 tweetstream 来做到这一点。

import tweetstream
stream = tweetstream.FilterStream(username = "myusername", password = "mypassword", track = bytes("oprah", encoding = "utf-8"))
for tweet in stream:
    print(tweet)

抛出:

类型错误:序列项 0:预期的 str 实例,找到 int

我已经对'track'参数进行了编码,因为之前尝试传递字符串时抛出了,

TypeError: POST 数据应该是字节或可迭代的字节。它不能是 str。

谢谢。

4

1 回答 1

0

您的问题是您使用 Python3 和 Python2 包。

有关 Python3 字节的信息,请参见此处:

http://docs.python.org/release/3.0.1/library/functions.html#bytes

还有这个:

http://docs.python.org/whatsnew/2.6.html#pep-3112-byte-literals

在 python3 中,这将发送一个字节数组。但是,_get_post_data函数需要一个字符串。在 python3 和 python2 中处理字符串的方式完全不同,对于那些希望移植到 Python3 的人来说,这是非常沮丧的根源。

除非这个包使它与 Python3 兼容,否则你将需要使用 Python2。您当然可以自己做,但考虑到您将使用的任何其他软件包也将仅限于使用 python2,我建议您这样做。

基本上,在 python 2.6/2.7 中,如果你这样做

b = bytes('a')
print type(b)

你会得到类型 str

在 python 3 中,如果你这样做

b = bytes('a')
print(type(b))

你会得到类型“bytearray”

于 2012-04-06T17:20:44.537 回答