2016-05-30 2 views
0

Pythonを使用してAPIへのクエリを自動化しようとしています。問題は、リクエストを特別な方法で作成する必要があり、私はそれを動作させることができないということです。これは私が問題を作り出している文字列の一部です。Pythonはを使用して文字列を作成し、jsonリクエストで送信します

payload = "{\n \"filter\": {\n \"name\":[\"name1\", \"name2\"]\n }" 

ここで、name1とname2は可変であり、リストから作成されます。私はそれを行うことを試みた方法は、単に最初これが機能

def create_string(list_of_names): 
#Creates the string of line items we want data from 
start = '[\\"%s\\"' % list_of_names[0]  
for i in list_of_names[1 : ]: 
    start += ', \\"%s\\"' %(i) 

start += "]" 

return start 

list_of_names = ['name1', 'name2'] 

そして単なる文字列にそれを追加して%sの一部を使用している

[\"name1\", \"name2\"] 

を作成するための関数を作成することでした。

payload = "{\n \"filter\": {\n \"name\":%s\n }" % create_string(list_of_names) 

このdoesntの仕事は、私は、これは、\はPythonでどのように使用されるかとは何かを持っていると考えることができます。

create_string関数は、印刷しているかどうかに応じて異なる出力を作成します。

a = create_string(list_of_names) 
print(a) 

は、私は%sの

[\"name1\", \"name2\", \"name3\"] 

そして、ちょうど出力

'[\\"name1\\", \\"name2\\", \\"name3\\"]' 

だから私の問題は、プリントを渡す方法を、その後である(a)の一部を使用して渡す必要があり、文字列を作成します。ペイロード文字列に追加します。誰にもこれに対する解決策がありますか?代わりに手であなたのペイロードを作成する

+0

jsonモジュールを使用しないようにする理由がありますか? 'import json; str = json.dumps({'filter':{'name':list_of_names}}) ' –

答えて

3

、最初のPythonの辞書を作成し、それを文字列に変換するにはjson -moduleを使用します。

payload = {"filter": {"name": list_of_names]}} 
payload = json.dumps(payload) 

たり、より複雑な辞書と:

payload = { 
    "filter": { 
     "date": "pastThirtyDays", 
     "lineitem": { 
      "buyType": "RTB", 
      "name": list_of_names, 
     } 
    }, 
    "metrics": ["cost"], 
    "dimensions": ["date", "lineItem"], 
} 
payload = json.dumps(payload) 
+0

辞書を変数に移動した方があなたの答えが少し良いかもしれません。初心者は、実際のP​​ython辞書を作成しているという事実を知りません。 –

+0

@BryanOakley:そうかもしれない。 – Daniel

+0

どうすればjson.dumpsが私のためのクエリを作成しますか?元のペイロードはこれよりもう少し長くて複雑ですが、どのように追加するべきかわかりません。 "\" \ "\" \ "\" \ "\" \ "\" \ \ n \ "\ n" "\ n" "\ n" "\ n" "\ n" \ n \ n "\" \ n \ n} " – Siesta

関連する問題