Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python TypeError:无法连接';str';和';列表';来自CSV的对象_Python_Csv - Fatal编程技术网

Python TypeError:无法连接';str';和';列表';来自CSV的对象

Python TypeError:无法连接';str';和';列表';来自CSV的对象,python,csv,Python,Csv,我有一个输入是WHOIS_Python.csv。它在一列四行中包含四个IP 我将运行以下代码: import csv import requests API_URL = "http://ip-api.com/line/" with open('WHOIS_Python.csv') as csvfile: IPReader = csv.reader(csvfile, quotechar='|' ) for row in IPReader: res = reque

我有一个输入是WHOIS_Python.csv。它在一列四行中包含四个IP

我将运行以下代码:

import csv
import requests

API_URL = "http://ip-api.com/line/"

with open('WHOIS_Python.csv') as csvfile:
    IPReader = csv.reader(csvfile, quotechar='|' )
    for row in IPReader:
        res = requests.get(API_URL + ''.join(row) + "?fields=query,as")
        print(res.text)
import requests

IP = "74.125.68.100"
API_URL = "http://ip-api.com/json/"

res = requests.get(API_URL + IP + "?fields=query,as")
print(res.text)
这是目前的结果:

222.22.222.22


222.22.2.22


22.222.2.222


2.2.222.22
我已经通过运行以下代码测试了API:

import csv
import requests

API_URL = "http://ip-api.com/line/"

with open('WHOIS_Python.csv') as csvfile:
    IPReader = csv.reader(csvfile, quotechar='|' )
    for row in IPReader:
        res = requests.get(API_URL + ''.join(row) + "?fields=query,as")
        print(res.text)
import requests

IP = "74.125.68.100"
API_URL = "http://ip-api.com/json/"

res = requests.get(API_URL + IP + "?fields=query,as")
print(res.text)
我将收到以下结果(这是我希望得到的结果):


最初,我得到的是“TypeError:无法连接'str'和'list'对象”,但现在这不是问题所在。我希望在测试API时得到相同的结果

是一个列表。在python中不能连接字符串和列表。你有几个选择

  • 将字符串转换为列表:

    res=requests.get([API\u URL]+row+[“?fields=query,如“])

  • 将列表转换为字符串(这很可能是您要查找的):

    res=requests.get(API\u URL++.join(row)+?fields=query,as))


  • 如果该行是一个列表列表,那么您可以根据需要应用上述内容,和/或订阅您正在查找的数据,即
    行[0]

    什么是
    IP
    ?您不会显示
    不在
    for
    循环中。
    IP
    从哪里来?很抱歉,它应该说:对于IPReader中的行:res=requests.get(API_URL+row+“?fields=query,as”)print(res.text)多行CSV将返回一个嵌套列表,每个子列表代表一行。也就是说,
    IPReader=[[row\u 1],[row\u 2]]
    。尝试更改为
    res=requests.get(API\u URL+row[0]+“?fields=query,as”)
    谢谢roganjosh。我尝试了你的建议,它返回了IP列表。我不再收到错误,但它只返回IP列表,而不是AS。谢谢你mrdomoboto。我尝试了第二个建议,但它只返回IP列表。我不再收到错误,但它只返回IP列表,而不是ASI。如果您不向我们显示您的数据,我们任何人都很难尝试帮助您。请给我们一个清晰的输入(数据输入,即csv)以输出(计算后的数据,即
    res
    是什么)示例@懒散的人是站不住脚的。我已经更新了原来的帖子,我希望这能提供一些清晰的信息。如果你需要更多的信息,请告诉我。多莫博托先生,我仔细检查了我的代码,意识到一切都按预期的方式运行。url试图同时提取查询值和'as'值,但这四个IP没有'as'值。非常感谢你的帮助!!