2013-03-12 73 views
-1

也许模式替换不是正确的词,但我不知道还有什么叫它。我想采取像“你好我的名字是名称和我是年龄年”或任何其他和实际值填入的值。什么是做到这一点的最好办法(再次,在python)Python模式替换

+0

[正则表达式](http://docs.python.org/2/library/re.html)是你正在寻找的。 – 2013-03-12 13:16:05

回答

3

你要string formatting

开始时你有一个像这样的字符串:

s = 'Hi my name is {name} and I am {age} years old' 

现在,当你想,你可以使用str.format法“中填入值”。

>>> s.format(name='John', age=42) 
Hi my name is John and I am 42 years old 

这样做是替换括号({})与给定材料的事情。

注意,此方法优于使用%运营商的格式,并且是在Python标准3

+0

啊,就是这样。我知道这很简单。谢谢。有趣的是,我不能接受这个作为8分钟以上的正确答案。 – Finn 2013-03-12 06:21:09

2

试试这个:

name, age = 'Art', 20 

myStr = "hi my name is {0} and I am a {1} years old" 

print myStr.format(name, age) 

或者:

myStr = "hi my name is %(name)s and I am a %(age)i years old" 
print myStr % {'name': name, 'age': age} 

或者:

myStr = "hi my name is %s and I am a %i years old" 
print myStr % (name, age) 

Read more on string formatting within python docs.

0

你可以看看蟒蛇重新http://docs.python.org/2/library/re.html

>>> import re 
>>> thing = "hi my name is placeholder" 
>>> thing = re.sub("placeholder", "Fred", thing) 
>>> thing 
"hi my name is Fred" 
0

以上所有答案高效。 现在我通过使用字符串模板提供了一种方法。

from string import Template 
s = Template("hi my name is ${name} and I am ${age} years old") 
s.substitute(name='Bill', age=24) 
# 'hi my name is Bill and I am 24 years old' 

您可能需要使用相关的方法safe_substitute,并找到更多here