Python urllib.urlencode问题
我正在尝试编写一个python脚本,将查询发送到TweetMountains.comAPI 我们的想法是,它将像这样运行—— 读取CSV tweet文件>构造查询>询问API>格式化JSON响应>写入CSV文件 到目前为止,我已经想到了这个-Python urllib.urlencode问题,python,json,api,csv,urllib,Python,Json,Api,Csv,Urllib,我正在尝试编写一个python脚本,将查询发送到TweetMountains.comAPI 我们的想法是,它将像这样运行—— 读取CSV tweet文件>构造查询>询问API>格式化JSON响应>写入CSV文件 到目前为止,我已经想到了这个- import csv import urllib import os count = 0 TweetList=[] ## Creates empty list to store tweets. TweetWriter = csv.writer(ope
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要求发送的查询如下——
(要分析的文本)
因此,我们的想法是urllib.urlencode只需将tweets添加到地址的末尾即可进行查询
在看了这么多示例后,最后四行代码变得一团糟。非常感谢您的帮助。我不能100%确定您想做什么,因为我不知道您正在阅读的文件的格式,但这部分看起来很可疑:
for rows in TweetList:
data = urllib.urlencode(TweetList[rows])
由于TweetList是一个列表,因此for循环在每次迭代中将列表中的一个值放入行中,例如:
list = [1, 2, 3, 4]
for num in list:
print num
将打印1234。但如果:
list = [1, 2, 3, 4]
for num in list:
print list[num]
最终将出现以下错误:Indexer错误:列表索引超出范围
你能详细说明一下你正在阅读的文件的格式吗
编辑 如果我理解正确,你需要这样的东西:
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)
.....
是的,当然,我正在读一个有两个字段的CSV。一个包含推文,另一个包含创建的日期。您所说的非常有意义“[rows]”部分是为了让脚本能够将创建的每条推文和日期附加到API url的末尾。对不起,我把你弄糊涂了!TweetList是一个包含列表的列表,因此:对于TweetList中的行,每次迭代都会在单词列表中生成文件中的行。这就是为什么你会犯这样的错误。您遇到的另一个问题是urllib.urlencode应该与dict对象而不是list对象一起传递,因为您需要具有值的键。我会用一些可能会让你继续的东西来编辑我的答案。干得好!似乎很有效…谢谢你,我真的很感谢你的帮助。