0

我明白了

ValueError: Invalid characters in query string

当我使用 twitter 流 API 进行以下查询时出错。

search_query = u"emmy awards, ios 7"
streaming_url = u"https://stream.twitter.com/1.1/statuses/filter.json?track={}".format(search_query)

但是,如果我只为 track 参数提供一个参数,就像ios 7一切都很好。我编码参数的方式有问题吗?因为根据 twitter API文档,它确实支持以逗号分隔的 track 参数的参数列表。

4

1 回答 1

1

您可能需要对来自以下的查询进行编码:

https://stream.twitter.com/1.1/statuses/filter.json?track=emmy awards, ios 7

至:

https://stream.twitter.com/1.1/statuses/filter.json?track=emmy%20awards%2C%20ios%207

您可以urllib.quote为此使用:

In [1]: import urllib

In [2]: search_query = u"emmy awards, ios 7"

In [3]: urllib.quote(search_query)
Out[3]: 'emmy%20awards%2C%20ios%207'

In [4]: streaming_url = u"https://stream.twitter.com/1.1/statuses/filter.json?rack={}".format(urllib.quote(search_query))

In [5]: streaming_url
Out[5]: u'https://stream.twitter.com/1.1/statuses/filter.json?rack=emmy%20awards%2C%20ios%207'

In [6]:
于 2013-09-21T01:14:38.120 回答