web-dev-qa-db-ja.com

URLで変数を渡しますか?

だから私はpythonに慣れていないので、どうしても助けが必要です。

'emで記述されたID(整数値)の束を含むファイルがあります。そのテキストファイル。

次に、ファイル内の各IDをURLに渡す必要があります。

例:「https://example.com/[id]」

それはこのように行われます

A = json.load(urllib.urlopen("https://example.com/(the first id present in the text file)"))
print A

これが本質的に行うことは、上記のURLに存在するIDに関する特定の情報を読み取り、それを表示することです。これをループ形式で機能させたいのですが、テキストファイル内のすべてのIDを読み取り、それを「A」に記載されているURLに渡して、値を継続的に表示します。これを行う方法はありますか?

誰かが私を助けてくれたらとてもありがたいです!

8
user1452759

古いスタイルの文字列連結を使用できます

>>> id = "3333333"
>>> url = "https://example.com/%s" % id
>>> print url
https://example.com/3333333
>>> 

新しいスタイルの文字列フォーマット:

>>> url = "https://example.com/{0}".format(id)
>>> print url
https://example.com/3333333
>>> 

avasalで言及されているファイルの読み取り(わずかな変更あり):

f = open('file.txt', 'r')
for line in f.readlines():
    id = line.strip('\n')
    url = "https://example.com/{0}".format(id)
    urlobj = urllib.urlopen(url)
    try:
        json_data = json.loads(urlobj)
        print json_data
    except:
        print urlobj.readlines()
18
pyfunc

怠惰なスタイル:

url = "https://example.com/" + first_id

A = json.load(urllib.urlopen(url))
print A

古いスタイル:

url = "https://example.com/%s" % first_id

A = json.load(urllib.urlopen(url))
print A

新しいスタイル2.6 +:

url = "https://example.com/{0}".format( first_id )

A = json.load(urllib.urlopen(url))
print A

新しいスタイル2.7 +:

url = "https://example.com/{}".format( first_id )

A = json.load(urllib.urlopen(url))
print A
5
xvatar

最初に行う必要があるのは、ファイルから各行を読み取る方法を知ることです。まず、ファイルを開く必要があります。これは、withステートメントで実行できます。

with open('my-file-name.txt') as intfile:

これにより、ファイルが開かれ、そのファイルへの参照がintfileに保存され、withブロックの最後でファイルが自動的に閉じられます。次に、ファイルから各行を読み取る必要があります。通常の古いforループでそれを行うことができます:

  for line in intfile:

これにより、ファイルの各行がループされ、一度に1つずつ読み取られます。ループでは、各行にlineとしてアクセスできます。残っているのは、指定したコードを使用してWebサイトにリクエストを送信することだけです。不足している1つのビットは、「文字列補間」と呼ばれるものです。これにより、文字列を他の文字列、数値、またはその他のものでフォーマットできます。あなたの場合、文字列(ファイルからの行)を別の文字列(URL)の中に入れたいと思います。これを行うには、%sフラグを文字列補間演算子%とともに使用します。

url = 'http://example.com/?id=%s' % line
A = json.load(urllib.urlopen(url))
print A

すべてをまとめると、次のようになります。

with open('my-file-name.txt') as intfile:
  for line in intfile:
    url = 'http://example.com/?id=%s' % line
    A = json.load(urllib.urlopen(url))
    print A
2
Haldean Brown

Python 3 +

新しい文字列フォーマットはPython 3でサポートされています。これは、文字列をフォーマットするためのより読みやすく、より良い方法です。これについて読むのに適した記事は次のとおりです。 Python 3のf-Strings

この場合、次のようにフォーマットできます。

_url = f"https://example.com/{id}"_

詳細な例

複数のパラメータをURLに渡したい場合は、次のように実行できます。

_name = "test_api_4"
owner = "[email protected]"

url = f"http://localhost:5001/files/create" \
f"?name={name}" \
f"&owner={owner}" \
_

ここでは複数のf文字列を使用しており、「\」を追加できます。これにより、間に改行文字を挿入することなく、同じ行に保持されます。

スペースがある値の場合

このような値の場合、pythonファイルに_from urllib.parse import quote_をインポートしてから、次のような文字列を引用する必要があります:quote("firstname lastname")

これにより、スペース文字が_%20_に置き換えられます。

0
Jainik