Cara yang umum adalah format()
fungsinya:
>>> s = "This is an {example} with {vars}".format(vars="variables", example="example")
>>> s
'This is an example with variables'
Ini berfungsi dengan baik dengan string format multi-baris:
>>> s = '''\
... This is a {length} example.
... Here is a {ordinal} line.\
... '''.format(length='multi-line', ordinal='second')
>>> print(s)
This is a multi-line example.
Here is a second line.
Anda juga dapat mengirimkan kamus dengan variabel:
>>> d = { 'vars': "variables", 'example': "example" }
>>> s = "This is an {example} with {vars}"
>>> s.format(**d)
'This is an example with variables'
Hal yang paling dekat dengan apa yang Anda tanyakan (dalam hal sintaksis) adalah string template . Sebagai contoh:
>>> from string import Template
>>> t = Template("This is an $example with $vars")
>>> t.substitute({ 'example': "example", 'vars': "variables"})
'This is an example with variables'
Saya harus menambahkan bahwa format()
fungsinya lebih umum karena sudah tersedia dan tidak memerlukan baris impor.
vars()
ataulocals()
sebagai kamus yang dimaksuddict
.{{this}}
.CATATAN : Cara yang disarankan untuk melakukan pemformatan string dengan Python adalah dengan menggunakan
format()
, seperti yang diuraikan dalam jawaban yang diterima . Saya mempertahankan jawaban ini sebagai contoh sintaks C-style yang juga didukung.# NOTE: format() is a better choice! string1 = "go" string2 = "now" string3 = "great" s = """ I will %s there I will go %s %s """ % (string1, string2, string3) print(s)
Beberapa bacaan:
sumber
Anda dapat menggunakan f-string Python 3.6 untuk variabel di dalam string multi-baris atau satu baris yang panjang. Anda dapat menentukan karakter baris baru secara manual menggunakan
\n
.Variabel dalam string multi-baris
string1 = "go" string2 = "now" string3 = "great" multiline_string = (f"I will {string1} there\n" f"I will go {string2}.\n" f"{string3}.") print(multiline_string)
Variabel dalam string satu baris yang panjang
string1 = "go" string2 = "now" string3 = "great" singleline_string = (f"I will {string1} there. " f"I will go {string2}. " f"{string3}.") print(singleline_string)
Cara lainnya, Anda juga dapat membuat f-string multiline dengan tanda kutip tiga.
multiline_string = f"""I will {string1} there. I will go {string2}. {string3}."""
sumber
+
untuk menggabungkan): stackoverflow.com/a/54564926/4561887Inilah yang Anda inginkan:
>>> string1 = "go" >>> string2 = "now" >>> string3 = "great" >>> mystring = """ ... I will {string1} there ... I will go {string2} ... {string3} ... """ >>> locals() {'__builtins__': <module '__builtin__' (built-in)>, 'string3': 'great', '__package__': None, 'mystring': "\nI will {string1} there\nI will go {string2}\n{string3}\n", '__name__': '__main__', 'string2': 'now', '__doc__': None, 'string1': 'go'} >>> print(mystring.format(**locals())) I will go there I will go now great
sumber
"""
mempertahankan baris baru, yang berarti ada baris baru ekstra sebelum dan sesudahmystring
.strip()
,.rstrip()
atau.lstrip()
, atau melakukan serangan balik di dalam tanda kutip tiga untuk menghindari pembuatan baris baru. mystring = "" "\ ABC \" ""Kamus dapat diteruskan ke
format()
, setiap nama kunci akan menjadi variabel untuk setiap nilai terkait.dict = {'string1': 'go', 'string2': 'now', 'string3': 'great'} multiline_string = '''I'm will {string1} there I will go {string2} {string3}'''.format(**dict) print(multiline_string)
Juga daftar dapat diteruskan ke
format()
, nomor indeks dari setiap nilai akan digunakan sebagai variabel dalam kasus ini.list = ['go', 'now', 'great'] multiline_string = '''I'm will {0} there I will go {1} {2}'''.format(*list) print(multiline_string)
Kedua solusi di atas akan menghasilkan yang sama:
sumber
f-string , juga disebut "literal string yang diformat", adalah literal string yang memiliki ekstensi
f
di awal; dan tanda kurung kurawal berisi ekspresi yang akan diganti dengan nilainya.f-string dievaluasi saat runtime.
Jadi kode Anda dapat ditulis ulang sebagai:
string1="go" string2="now" string3="great" print(f""" I will {string1} there I will go {string2} {string3} """)
Dan ini akan dievaluasi menjadi:
Anda dapat mempelajarinya lebih lanjut di sini .
sumber
Jika ada yang datang ke sini dari klien python-graphql mencari solusi untuk mengirimkan objek sebagai variabel, inilah yang saya gunakan:
query = """ {{ pairs(block: {block} first: 200, orderBy: trackedReserveETH, orderDirection: desc) {{ id txCount reserveUSD trackedReserveETH volumeUSD }} }} """.format(block=''.join(['{number: ', str(block), '}'])) query = gql(query)
Pastikan untuk menghilangkan semua tanda kurung kurawal seperti yang saya lakukan: "{{", "}}"
sumber