2013-10-09 32 views
0

有沒有什麼辦法可以在沒有連接的情況下在unicode符號之間放置一個聲明的字符串?例如,我已經聲明瞭一個字符串a = "house"。無論如何,我可以聲明<\house/>沒有 必須導致"<\\" + a + "/>"?當涉及更多的unicode符號時,連接可能變得麻煩。在Python 2.7中構造沒有連接的字符串012

回答

2

字符串插值怎麼樣?

"<\\%s/>" % a 

或多個項目:

<"\\%s %s/>" % (a, b) 

與字典也可以工作:

"<\\%(a)s/>" % {'a': a} 

的Python 3.x的風格插值使用做了內置str.format方法:

"<\\{}/>".format(a) 
"<\\{} {}/>".format(a, b) 
"<\\{1} {0}/>".format(a, b) # => "<\\" + b + " " + a + "/>" 
"<\\{a} {b}/>".format(a=a, b=b) 
+0

「Python 3.x風格」適用於2.6+,因此它不是真正的3.x風格 – Blender

+0

@Blender:afaik該功能從3.x引入並支持2.x。 –

2

你可以使用str.format方法:

a = "Hello {name}, welcome to {place}." 
a.format(name="Salem", place="Tokyo") # "Hello Salem, welcome to Tokyo." 

docs.python.org - String format syntax

如果你需要更強大的東西,你可以用一個模板引擎。有一個簡單的例子與Jinja2

  • jinja_example.py

    from jinja2 import Template 
    
    template_file = Template(open("templatefile").read()) 
    
    obj = [ 
        {"name": "John", "surname": "Doe"}, 
        {"name": "Foo", "surname": "Bar"} 
    ] 
    
    print template_file.render(data=obj) 
    
  • templatefile

    <html> 
    <body> 
    {% if data %} 
        {% for user in data %} 
        <h1>Hello {{ user.name }} {{ user.surname }}.</h1> 
        {% endfor %} 
    {% else %} 
        <h1>Nothing found.</h1> 
    {% endif %} 
    </body> 
    </html> 
    

和輸出(一些新行的刪除):

$ python jinja_example.py 
<html> 
<body> 
    <h1>Hello John Doe.</h1>  
    <h1>Hello Foo Bar.</h1> 
</body> 
</html> 

您可以在Python Wiki中找到大量模板引擎。

+0

Python使用'#'作爲註釋而不是'//'。 – Dombey

+0

@Dombey是的。謝謝。 – Salem