Python 字符串格式化,%格式符,大家举例看看,请简述Python中格式化字符串的几种方式

  Python 字符串格式化,%格式符,大家举例看看,请简述Python中格式化字符串的几种方式

  我们知道,python中的字符串分普通字符串和采用双字节对字符进行编码字符串,一般从数据库中读取的字符串会自动被转换为采用双字节对字符进行编码字符串

  下面回到重点,使用json.dumps时,一般的用法为:

  obj={name :测试}

  json.dumps(obj)

  {name: \\u6d4b\\u8bd5}

  打印json.dumps(obj)

  {name: \u6d4b\u8bd5}

  转储(obj).编码(“utf-8”)

  {name: \\u6d4b\\u8bd5}

  可以看到这里输出的字符串为普通字符串,但是里面的内容却是采用双字节对字符进行编码字符串的内容,即使对结果进行编码( utf-8 ),因为这个字符串本身就已经编码过了,所有进行编码不会有变化

  要想得到字符串的真实表示,需要用到参数确保_ascii=False(默认为真实):

  json.dumps(obj,确保_ascii=False)

  { name : \ xe6 \ xb5 \ x8b \ xe8 \ xaf \ x95 }

  打印json.dumps(obj,确保_ascii=False)

  { 姓名: 测试}

  坑:试试下面的用法(比如键是从数据库中读取的,则会以采用双字节对字符进行编码字符串形式存在):

  key=uname

  obj={key:测试}

  json.dumps(obj,确保_ascii=False)

  回溯(最近一次呼叫):

  文件""中的第一行

  file /usr/lib 64/python 2.6/JSON/_ _ init _ _ .py ,第237行,在转储

  * *千瓦)。编码(对象)

  文件/usr/lib64/python 2.6/JSON/encoder。py ,第368行,编码中

  返回""。连接(块)

  UnicodeDecodeError错误:" ascii "编解码器无法解码位置一中的字节0xe6:序号不在范围内(128)

  这是因为键和价值不能以混合普通字符串和采用双字节对字符进行编码字符串的形式存在

  改成下面则正常了(同时为普通字符串或同时为采用双字节对字符进行编码字符串):

  key=uname

  obj={key:u 测试}

  json.dumps(obj,确保_ascii=False)

  u{name: \u6d4b\u8bd5}

  obj={key.encode(utf-8):u 测试。编码( utf-8)}

  json.dumps(obj,确保_ascii=False)

  { name : \ xe6 \ xb5 \ x8b \ xe8 \ xaf \ x95 }

  另外说说还有一个参数系统默认值

  考虑下面的场景:

  类别数据:

  .def __init__(self):

  .self.name=

  .self.detail=

  .

  数据=数据()

  data.name=名字

  data.detail=细节

  obj={data:data}

  json.dumps(obj,确保_ascii=False)

  会报下面的异常:

  回溯(最近一次呼叫):

  文件""中的第一行

  file /usr/lib 64/python 2.6/JSON/_ _ init _ _ .py ,第237行,在转储

  * *千瓦)。编码(对象)

  文件/usr/lib64/python 2.6/JSON/encoder。py ,第367行,编码中

  chunks=list(self.iterencode(o))

  文件/usr/lib64/python 2.6/JSON/encoder。py ,第309行,in _iterencode

  自我中的大块. iterencode_dict(o,markers):

  文件/usr/lib64/python 2.6/JSON/encoder。py ,第275行,in _iterencode_dict

  自我中的大块. iterencode(值,标记):

  文件/usr/lib64/python 2.6/JSON/encoder。py ,第317行,in _iterencode

  自我中的大块. iterencode_default(o,markers):

  文件/usr/lib64/python 2.6/JSON/encoder。py ,第323行,in _iterencode_default

  newobj=self.default(o)

  默认情况下,文件"/usr/lib 64/python 2.6/JSON/encoder。py”,第344行

  引发TypeError(repr(o)"不是数据可序列化的")

  类型错误:__main__ .处的数据实例不是数据可序列化的

  这是因为json.dumps不知道如何对数据对象进行序列化,需要定义一个函数,并赋给参数默认值:

  def convert_to_builtin_type(obj):

  .d={}

  .d。更新(obj .__字典_ _)

  .返回d

  .

  json.dumps(obj,ensure _ ascii=False,default=convert _ to _ builtin _ type)

  { data :{ name : \ xe5 \ x90 \ x8d \ xe5 \ xad \ x97 , detail : \ xe7 \ xbb \ x86 \ xe8 \ x8a \ x82 } }

  打印json.dumps(obj,ensure _ ascii=False,default=convert _ to _ builtin _ type)

  { 数据:{ 名称: 名字,详细信息: 细节}}

  def convert_to_builtin_type(obj):

  d={}

  d。更新(obj .__字典_ _)

  返回d

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • 使用js实现数据格式化命令,使用js实现数据格式化的方法
  • 使用js实现数据格式化命令,使用js实现数据格式化的方法,使用js实现数据格式化
  • sql 时间格式化函数怎么用,sqlserver时间格式化函数
  • sql 时间格式化函数怎么用,sqlserver时间格式化函数,SQL 时间格式化函数
  • Linux磁盘格式化命令,linux格式化整个磁盘的命令
  • Linux磁盘格式化命令,linux格式化整个磁盘的命令,Linux磁盘格式化命令详解
  • js获取当前日期并格式化,js获取当前时间年月日并输出
  • js获取当前日期并格式化,js获取当前时间年月日并输出,JS获取当前时间的年月日时分秒及时间的格式化的方法
  • js格式化时间的方法是什么,js 格式化时间
  • js格式化时间的方法是什么,js 格式化时间,js格式化时间的方法
  • js格式化时间格式,js格式化时间字符串
  • js格式化时间格式,js格式化时间字符串,JS格式化时间的几种方法总结
  • js中时间格式化的几种方法有哪些,js中时间格式化的几种方法是什么
  • js中时间格式化的几种方法有哪些,js中时间格式化的几种方法是什么,js中时间格式化的几种方法
  • windows命令行格式化硬盘,格式化将清除磁盘中的所有文件
  • 留言与评论(共有 条评论)
       
    验证码: