我正在尝试根据列表中的元素数生成链接。我有一个包含大量运费ID的列。
我将此列复制到列表 id_list 。
接下来,我从此列表中创建了一个字符串 str2 ,并将其与其他2个字符串连接以创建链接。并将其写入文件。
现在我想将列表拆分为较小的列表,每个列表包含400个元素。并为每个子列表生成单独的链接。但我无法拆分此列表。这该怎么做?
注意:id_list中的元素数量每天都在变化,因此我需要根据元素的数量动态生成链接。
我的代码:
conn = sqlite3.connect('Unicommerce.db')
cur = conn.cursor()
temp_list = []
id_list = []
cur.execute("""Select shipment from unicom;""")
rows = cur.fetchall()
for row in rows:
temp_list.append(row)
for sublist in temp_list:
for element in sublist:
id_list.append(element)
str1 = "abc.com/oms/shipment/show/"
str2 = '-'.join([str(num) for num in id_list])
str3 = "?legacy=1"
link_str = str1 + str2 + str3
file = open("Shipment.txt","wb")
file.writelines(link_str)
file.close()
conn.commit()
conn.close()
答案 0 :(得分:3)
使用修改后的代码版本的列表理解将起作用:
str1 = "abc.com/oms/shipment/show/"
str3 = "?legacy=1"
n=400
link_strings = [str1 + '-'.join([str(num) for num in id_list[i:i+n]]) + str3 for i in xrange(0, len(id_list), n)]
更改n的值以更改块大小。
以下是使用较小分块大小的简明示例:
id_list=range(10)
id_list
Out[2]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
str1 = "abc.com/oms/shipment/show/"
str3 = "?legacy=1"
n=4
link_strings = [str1 + '-'.join([str(num) for num in id_list[i:i+n]]) + str3 for i in xrange(0, len(id_list), n)]
link_strings
Out[4]:
['abc.com/oms/shipment/show/0-1-2-3?legacy=1',
'abc.com/oms/shipment/show/4-5-6-7?legacy=1',
'abc.com/oms/shipment/show/8-9?legacy=1']
答案 1 :(得分:1)
>>> map(None, *[iter([1,2,3,4,5,6,7,8])]*3)
[(1, 2, 3), (4, 5, 6), (7, 8, None)]
您可以替换 id_list 的列表,并为 400 替换 3 的列表。