繁体   English   中英

如何在 python 循环中正确使用从文件导入的多个变量

[英]How to correctly use multiple variables imported from a file in a python loop

我正在使用 python 代码导出 Google 搜索的前 10 个结果。 但我有 100 多个不同的搜索查询,我不想为每次搜索手动更改查询。 我有想法从 .csv 文件导入我的搜索查询并将它们放在一个 var 中。 就像下面的代码:

import csv
import requests

with open('test.csv', 'r') as file:
    next(file) # drop header
    varlist = [row[0] for row in csv.reader(file, delimiter=",")]


for var in varlist:
    payload = {'api_key': 'API_KEY', 'query':str(var), 'results':'10', 'country':'gb', 'page':'0'}
    resp = requests.get('https://api.example.com', params=payload)
print (resp.text)

我的 csv 看起来像:

varlist,customer
2132,1
1234,2

当我运行上面的代码时,对于搜索查询“1234”,我只得到 output。

output:

result search query 1234

预计 output:

result search query 2132
result search query 1234

哪里出错了? 以及如何正确处理?

您需要将数据存储在 python 数据结构中,例如列表或字典:

data = []  # <- HERE
for var in varlist:
    payload = {'api_key': 'API_KEY', 'query':str(var), 'results':'10', 'country':'gb', 'page':'0'}
    resp = requests.get('https://api.example.com', params=payload)
    data.append(resp.text)  # <- HERE

print(*data, sep='\n')

# Output
result search query 2132
result search query 1234

注意:如果您的 csv 包含 header,请使用DictReader class 而不是reader function

解决方法很简单。 我必须像下面的代码一样将 print 放在循环中:

for var in varlist:
    payload = {'api_key': 'API_KEY', 'query':str(var), 'results':'10', 'country':'gb', 'page':'0'}
    resp = requests.get('https://api.example.com', params=payload)
    print (resp.text)

谢谢大家对我的评论

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM