Python:将数组分成部分

标签 python json

更新:在 Jeremy 将我的数据集分成 50 个 block 的功能的帮助下,我设法解决了这个问题。我已经发布了最终答案。

我有以下代码,我想将数组分成 block 的原因是我正在尝试使用一次只允许 50 个请求的 api。我也是试图转向 python 的 java 开发人员。我想要做的是将数组分成 50 个 block 并将它们提供给 api。

我有一个包含一长串 ID 的文本文件,我根据读入的 ID 构建 URL。

import simplejson as json
import sys
import urllib
import traceback, csv, string

# "base" API URL
URL_BASE = 'Some URL'
# set user agent string
urllib.version = "Data Collection Fix it"

page_ids = []

def divide_list(list_, n):
    for i in range(0, len(list_), n):
        yield list_[i:i + n]

def issue_query():

    iFile = open('ReadFromThisFile.txt', "r")
    lines = iFile.readlines()
    #print len(lines)

    for line in lines:
        ids = string.split(line)
        ids = ids[0]
        page_ids.append(ids)            

    url = URL_BASE
    indicies = range(len(page_ids))
    File = open("WriteToThisFile.csv", "w")
    for indicies in divide_list(page_ids, 50):
        count = 0
        fiftyIds =[]
        url = URL_BASE
        for id in indicies:
            str(id).strip
            url += str(id) + '|'
            print url
            fiftyIds.append(str(id))
            count += 1
        print count 
        rv = urllib.urlopen(url)
        j = rv.read().decode("utf-8")
        #sys.stderr.write(j + "\n")
        data = json.loads(j)
        for id in fiftyIds:
            try:
                s = int(data["query"]["pages"][id]["revisions"][0]["size"])
                sys.stderr.write("%d\t%d\n" % (int(id), s))
                File.write("%d\t%d\n" % (int(id), s))
                #print ("%d\t%d\n" % (int(id), s))
                # do something interesting with id and s
            except Exception, e:
                traceback.print_exc()

    File.close()
    iFile.close()

issue_query()

我知道很多经验丰富的 python 开发人员可能会因为提出这样一个简单的问题而给我负面评价,但我在谷歌或此处找不到任何好的示例。如果我重复了一个问题,很抱歉给您带来任何麻烦。

谢谢,

最佳答案

Jeremy's answer 的生成器版本:

def divide_list(list_, n):

   for i in range(0, len(list_), n):
       yield list_[i:i + n]


for chunk in divide_list([1,2,3,4,5], 2):
   print chunk 

关于Python:将数组分成部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5386844/

相关文章:

python - 在 Matplotlib 中选择标记大小

Python 不等于 'for' 迭代

json - Golang JSON 到包含 slice 的 map 本身的 map slice (无类型)

javascript - 为 MailApp.sendMail 动态创建 inlineImages JSON

php - 从 URL 解码 JSON

python - 如何在 Flask 中获取 HTTP 版本

python - 我应该对私有(private)/ protected 方法进行单元测试吗

json - 如何在代码中定义包含定义的Json Schema

ios - 使用 NSJSONSerialization 将 NSString 转换为 JSON 不起作用

python - 如何避免 python Tkinter 中的键盘冲突?