当前位置: 首页 > 面试题库 >

添加自定义转换类型以进行字符串格式化

有骏祥
2023-03-14
问题内容

python是否有将其他转换类型添加到字符串格式的方法?

%基于字符串的格式中使用的标准转换类型类似于s字符串,d十进制等。我想做的是添加一个新字符,我可以为此指定一个自定义处理程序(例如lambda函数),返回要插入的字符串。

例如,我想添加h为一种转换类型,以指定应转义该字符串以便在HTML中使用。举个例子:

#!/usr/bin/python

print "<title>%(TITLE)h</title>" % {"TITLE": "Proof that 12 < 6"}

并将cgi.escape"TITLE"用于产生以下输出:

<title>Proof that 12 &lt; 6</title>

问题答案:

您可以为html模板创建自定义格式器:

import string, cgi

class Template(string.Formatter):
    def format_field(self, value, spec):
        if spec.endswith('h'):
            value = cgi.escape(value)
            spec = spec[:-1] + 's'
        return super(Template, self).format_field(value, spec)

print Template().format('{0:h} {1:d}', "<hello>", 123)

注意,所有转换都在模板类内部进行,不需要更改输入数据。



 类似资料:
  • 问题内容: 在这个奇怪的例子中,有人创建了一个新类型,它实际上只是一个字符串: 但是,此代码无法编译: 不能在返回参数中使用Foobar(CustomType类型)作为类型字符串 您将如何修复SomeFunction,使其能够返回Foobar的字符串值(“ somestring”)? 问题答案: 将值转换为字符串:

  • 问题 你想通过 format() 函数和字符串方法使得一个对象能支持自定义的格式化。 解决方案 为了自定义字符串的格式化,我们需要在类上面定义 __format__() 方法。例如: _formats = { 'ymd' : '{d.year}-{d.month}-{d.day}', 'mdy' : '{d.month}/{d.day}/{d.year}', 'dmy' :

  • 问题内容: 我当前的格式字符串是: 我想添加一个新字段,在包含该格式化程序的每个脚本中它将具有不同的值。 但是我不确定如何将该值传递给记录器以内插到格式字符串中。我显然可以通过每次传递它使其出现在日志消息中,但这很麻烦。 我试过了: 但没有任何作用。 问题答案: 您可以使用LoggerAdapter,这样就不必在每次记录调用时都传递额外的信息: 日志(类似) 过滤器还可用于添加上下文信息。 产生类

  • 问题内容: 我刚开始使用Go,所以这很明显。编译器不允许以下代码:(http://play.golang.org/p/3sTLguUG3l) 错误是: 从规格上看,[] string看起来与[] Card不是相同的基础类型,因此无法进行类型转换。 确实是这样,还是我错过了什么? 如果是这样,为什么会这样呢?假设在一个非宠物示例程序中,我输入了一个字符串切片,是否可以将其“投射”到Card切片中,或

  • 问题内容: 目前,我仅显示键,每个键都在新行中显示: 如何在新行中将它们显示为 key :: value ? 问题答案: 通过迭代器,将生成一个键,值元组: 更新为现代符号:

  • 本文向大家介绍VBA 使用格式将数字类型转换为字符串并将其格式化为字符串,包括了VBA 使用格式将数字类型转换为字符串并将其格式化为字符串的使用技巧和注意事项,需要的朋友参考一下 示例