2017-02-02 14 views
-1

私はWHOIS_Python.csvという入力を持っています。 1つの列、4つの行に4つのIPが入っています。TypeError:CSVから 'str'と 'list'オブジェクトを連結できません

私は、次のコードを実行します:私は、次のコードを実行することにより、APIをテストしてみた

222.22.222.22 


222.22.2.22 


22.222.2.222 


2.2.222.22 

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) 

これは、現在の結果である

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) 

を次の結果が表示されます(これは私が得たい結果です):

AS15169 Google Inc. 
74.125.68.100 

元々、私は "TypeError: 'str'と 'list'オブジェクトを連結できませんでしたが、今は問題ではありません。私はAPIをテストしたときと同じ結果を得たいと思います。

+2

「IP」とは何ですか?あなたはそれを表示しません –

+0

'row'はあなたの' for'ループにありません。からの 'IP'はどこですか? –

+0

私は、IPReaderの行について: res = requests.get(API_URL + row + "?fields = query、as") print(res.text) – LazyPanda

答えて

0

rowです。 Pythonで文字列とリストを連結することはできません。いくつかの選択肢があります。

  1. リストに文字列を変換します

    res = requests.get([API_URL] + row + ["?fields=query,as"])

  2. 文字列にリストを変換する(これはあなたがそうを探しているよりもしているものである):

    res = requests.get(API_URL + ''.join(row) + "?fields=query,as")

行がリストのリストであれば、必要に応じて上記を適用したり、探しているデータに添え字を付けることができます。row[0]

+0

ありがとうmrdomoboto。私は2番目の提案を試みましたが、IPのリストだけを返しました。私はもはやエラーを受け取っていませんが、それはASのリストではなくIPのリストを返すだけです – LazyPanda

+0

あなたのデータがどのように見えるかを私たちに知らせなければ、出力するための明確な入力(データが入ってくる、すなわちcsv)を与えてください(計算後のデータ、つまり 'res'が何であるか)。 @LazyPanda – ospahiu

+0

わかりやすい。元の投稿を更新しました。これが明快になることを願っています。詳しい情報が必要な場合はお知らせください。 – LazyPanda

関連する問題