Tôi cố gắng để xây dựng một chuỗi định dạng với lập luận lười biếng, ví dụ: Tôi cần SMTH như:python, định dạng chuỗi
"%s \%s %s" % ('foo', 'bar') # "foo %s bar"
làm thế nào tôi có thể làm điều này?
Tôi cố gắng để xây dựng một chuỗi định dạng với lập luận lười biếng, ví dụ: Tôi cần SMTH như:python, định dạng chuỗi
"%s \%s %s" % ('foo', 'bar') # "foo %s bar"
làm thế nào tôi có thể làm điều này?
"%s %%s %s" % ('foo', 'bar')
bạn cần %%
"%s %%s %s" % ('foo', 'bar') # easy!
Ký tự đôi% cho phép bạn đặt% vào chuỗi định dạng.
Chỉ cần sử dụng một biểu tượng tỷ lệ phần trăm giây.
In [17]: '%s %%s %s' % ('foo', 'bar')
Out[17]: 'foo %s bar'
>>> "%s %%s %s" % ('foo', 'bar')
'foo %s bar'
%%
thoát biểu tượng %
. Vì vậy, về cơ bản bạn chỉ phải viết:
"%s %%s %s" % ('foo', 'bar') # "foo %s bar"
Và nếu bao giờ bạn cần phải ra một tỷ lệ phần trăm hoặc một cái gì đó:
>>> "%s %s %%%s" % ('foo', 'bar', '10')
'foo bar %10'
với python 2.6:
>>> '{0} %s {1}'.format('foo', 'bar')
'foo %s bar'
hoặc với python 2.7:
>>> '{} %s {}'.format('foo', 'bar')
'foo %s bar'
Nếu bạn không 'T biết thứ tự các đối số sẽ được suplied, bạn có thể sử dụng chuỗi mẫu
Dưới đây là một lớp chứa tự mà đặt ra như là một str
với chức năng này (chỉ dành cho đối số từ khóa)
class StringTemplate(str):
def __init__(self, template):
self.templatestr = template
def format(self, *args, **kws):
from string import Template
#check replaced strings are in template, remove if undesired
for k in kws:
if not "{"+k+"}" in self:
raise Exception("Substituted expression '{k}' is not on template string '{s}'".format(k=k, s=self))
template= Template(self.replace("{", "${")) #string.Template needs variables delimited differently than str.format
replaced_template= template.safe_substitute(*args, **kws)
replaced_template_str= replaced_template.replace("${", "{")
return StringTemplate(replaced_template_str)
Python 3.6 hiện nay hỗ trợ nội suy chuỗi chữ viết tắt với PEP 498. Đối với trường hợp sử dụng của bạn, cú pháp mới cho phép:
var1 = 'foo'
var2 = 'bar'
print(f"{var1} %s {var2}")
giới hạn 30 ký tự ngu ngốc:/ –
Tôi đồng ý. :-) [trên nhận xét, quá] – payne