我正在尝试编写一个向TweetSentiments.com API发送查询的python脚本。
这个想法是它会像这样表现 - 读取CSV推文文件>构造查询>询问API>格式JSON响应>写入CSV文件。
到目前为止,我已经想出了这个 -
import csv
import urllib
import os
count = 0
TweetList=[] ## Creates empty list to store tweets.
TweetWriter = csv.writer(open('test.csv', 'w'), dialect='excel', delimiter=' ',quotechar='|')
TweetReader = csv.reader(open("C:\StoredTweets.csv", "r"))
for rows in TweetReader:
TweetList.append(rows)
#print TweetList [0]
for rows in TweetList:
data = urllib.urlencode(TweetList[rows])
connect = httplib.HTTPConnection("http://data.tweetsentiments.com:8080/api/analyze.json?q=")
connect.result = json.load(urllib.request("POST", "", data))
TweetWriter.write(result)
但是当它运行时我得到“第20行,data = urllib.urlencode(TweetList [rows])类型错误:列表索引必须是整数,而不是列表”
我知道我的列表“TweetList”正在按照我的意愿存储推文,但我不认为我正在使用urllib.urlencode正确。 API要求查询像 -
一样发送http://data.tweetsentiments.com:8080/api/analyze.json?q=(要分析的文字)
所以我的想法是urllib.urlencode只是将推文添加到地址的末尾以允许查询。
在看了这么多例子之后,最后四行代码变得一团糟。非常感谢您的帮助。
答案 0 :(得分:0)
我不是100%肯定你正在尝试做什么,因为我不知道你正在阅读的文件的格式是什么,但这部分看起来很可疑:
for rows in TweetList:
data = urllib.urlencode(TweetList[rows])
因为 TweetList 是一个列表,for循环在每次迭代中从列表中放入行一个单独的值,所以这个例如:
list = [1, 2, 3, 4]
for num in list:
print num
将打印1 2 3 4.但如果这样:
list = [1, 2, 3, 4]
for num in list:
print list[num]
最终会出现此错误: IndexError:列表索引超出范围。
您能否详细说明您正在阅读的文件的格式?
如果我理解正确,你需要这样的东西:
tweets = []
tweetReader = csv.reader(open("C:\StoredTweets.csv", "r"))
for row in tweetReader:
tweets.append({ 'tweet': row[0], 'date': row[1] })
for row in tweets:
data = urllib.urlencode(row)
.....