kwi*_*ess 22 python string substring string-interpolation
我想就用一些其他文本替换字符串的子串的最佳方法得到一些意见.这是一个例子:
我有一个字符串,a,可能是"你好我的名字是$ name".我还有另一个字符串b,我想在其子字符串'$ name'的位置插入字符串a.
我认为如果以某种方式指示可替换变量将是最简单的.我使用了一个美元符号,但它可以是花括号之间的字符串或任何你认为最好用的字符串.
解决方案: 以下是我决定这样做的方法:
from string import Template
message = 'You replied to $percentageReplied of your message. ' +
'You earned $moneyMade.'
template = Template(message)
print template.safe_substitute(
percentageReplied = '15%',
moneyMade = '$20')
Run Code Online (Sandbox Code Playgroud)
Ray*_*ger 55
以下是最常见的方法:
>>> import string
>>> t = string.Template("Hello my name is $name")
>>> print t.substitute(name='Guido')
Hello my name is Guido
>>> t = "Hello my name is %(name)s"
>>> print t % dict(name='Tim')
Hello my name is Tim
>>> t = "Hello my name is {name}"
>>> print t.format(name='Barry')
Hello my name is Barry
Run Code Online (Sandbox Code Playgroud)
使用string.Template的方法很容易学习,并且对bash用户应该很熟悉.它适合暴露给最终用户.这种风格在Python 2.4中可用.
该百分比风格将是熟悉的很多人从其他编程语言的到来.有些人发现这种风格容易出错,因为尾随"s" %(name)s,因为%-operator具有与乘法相同的优先级,并且因为应用参数的行为取决于它们的数据类型(元组和dicts变得特殊)处理).Python从一开始就支持这种风格.
在花括号风格只在Python 2.6或更高版本的支持.它是最灵活的样式(提供丰富的控制字符集并允许对象实现自定义格式化程序).
Qua*_*ega 11
有很多方法可以做到这一点,通常使用的是通过字符串提供的设施.这意味着使用%操作员,或者更好,更新和推荐str.format().
例:
a = "Hello my name is {name}"
result = a.format(name=b)
Run Code Online (Sandbox Code Playgroud)
或者更简单
result = "Hello my name is {name}".format(name=b)
Run Code Online (Sandbox Code Playgroud)
您还可以使用位置参数:
result = "Hello my name is {}, says {}".format(name, speaker)
Run Code Online (Sandbox Code Playgroud)
或者使用显式索引:
result = "Hello my name is {0}, says {1}".format(name, speaker)
Run Code Online (Sandbox Code Playgroud)
这允许您更改字符串中字段的顺序,而无需将调用更改为format():
result = "{1} says: 'Hello my name is {0}'".format(name, speaker)
Run Code Online (Sandbox Code Playgroud)
格式非常强大.您可以使用它来决定制作字段的宽度,如何编写数字以及排序的其他格式,具体取决于您在括号内写的内容.
如果替换更复杂str.replace(),您还可以使用函数或正则表达式(来自re模块).
在python中检查replace()函数.这是一个链接:
http://www.tutorialspoint.com/python/string_replace.htm
在尝试替换您指定的某些文本时,这应该很有用.例如,在链接中,他们向您显示:
str = "this is string example....wow!!! this is really string"
print str.replace("is", "was")
Run Code Online (Sandbox Code Playgroud)
对于每个单词"is",它将用单词替换它"was".
你可以这样做:
"My name is {name}".format(name="Name")
Run Code Online (Sandbox Code Playgroud)
它在python中原生支持,你可以在这里看到:
http://www.python.org/dev/peps/pep-3101/
| 归档时间: |
|
| 查看次数: |
22220 次 |
| 最近记录: |