1

私はこの文字列を正しく補間しようとしています:

/test/test?Monetization%20Source=%d&Channel%20Id=%d' % (mid, cid)

%20をそのままレンダリングし、%dを変数midおよびcidのプレースホルダーとして機能させたいと思います。どうすればよいですか?

4

4 に答える 4

10

一般的に、あなたは望むurllib.urlencode

import urllib
url = '/test/test?' + urllib.urlencode({
  'Monetization Source': mid,
  'Channel Id': cid,
})
于 2011-09-12T17:57:48.430 に答える
2

これは定数文字列リテラルだと思いますか?もしそうなら、それは簡単です-あなたが保持したいパーセント記号を2倍にするだけです。

'/test/test?Monetization%%20Source=%d&Channel%%20Id=%d' % (mid, cid)
于 2011-09-12T17:55:25.263 に答える
1

Python 2.6以降、 Format Specification Mini-Languageを使用できます。これは、古い(ただしまだサポートされている)%演算子よりもはるかに強力です。

>>> mid=4
>>> cid=6
>>> "/test/test?Monetization%20Source={0:d}&Channel%20Id={1:d}".format(mid, cid) 
'/test/test?Monetization%20Source=4&Channel%20Id=6'

整数の:dを省略すると、デフォルトでstr()になります。

Python 2.7および3.2以降、パラメータインデックスを省略できます。

>>> "...ce={:d}&Channel%20Id={:d}"...

ただし、マニュアルを参照してください。format()メソッドと組み込み関数は非常に柔軟で便利です。

于 2011-09-12T17:56:29.783 に答える
0

'f-string'(Python 3.6で導入)を使用すると、補間を簡単に実現できます。

f-stringまたはformatted-stringは、最小限の構文を使用して文字列をフォーマットする方法を提供します。「f」または「F」はプレフィックスとして使用され、中括弧{}はプレースホルダーとして使用されます。

mid=1.1
cid=1.2

print(f"Default:\n /test/test?Monetization%20Source={mid}&Channel%20Id={cid}")

出力は、

Default:
 /test/test?Monetization%20Source=1.1&Channel%20Id=1.2

文字列リテラルに文字列自体の一部として中括弧{}が含まれている場合は、中括弧を2倍にして、中括弧が文字列リテラルの一部であり、プレースホルダーではないことをインタプリタに通知する必要があります。

print(f"With curly braces:\n /test/test?{{Monetization}}%20Source={mid}&Channel%20Id={cid}")

ここでは、{Monetization}は文字列リテラル自体の一部であるため、追加の中括弧が{{Monetization}}として使用されます。

出力は、

With curly braces:
 /test/test?{Monetization}%20Source=1.1&Channel%20Id=1.2
于 2020-06-30T10:08:32.387 に答える