`
android_madness
  • 浏览: 39294 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

python format string (转)

阅读更多
字符串的格式化


在python中也有类似于c中的printf()的格式输出标记。在python中格式化输出字符串使用的是%运算符,通用的形式为


格式标记字符串 % 要输出的值组
其中,左边部分的”格式标记字符串“可以完全和c中的一致。右边的'值组'如果有两个及以上的值则需要用小括号括起来,中间用短号隔开。重点来看左边的部分。左边部分的最简单形式为:

%cdoe
其中的code有多种,不过由于在python中,所有东西都可以转换成string类型,因此,如果没有什么特殊需求完全可以全部使用’%s‘来标记。比如:

'%s %s %s' % (1, 2.3, ['one', 'two', 'three'])
它的输出为'1 2.3 ['one', 'two', 'three']',就是按照%左边的标记输出的。虽然第一个和第二值不是string类型,一样没有问题。在这个过程中,当电脑发现第一个值不是%s时,会先调用整型数的函数,把第一个值也就是1转成string类型,然后再调用str()函数来输出。前面说过还有一个repr()函数,如果要用这个函数,可以用%r来标记。除了%s外,还有很多类似的code:

整型数:%d
无符号整型数:%u
八进制:%o
十六进制:%x   %X
浮点数:%f
科学记数法: %e   %E
根据数值的不同自动选择%e或%f: %g
根据数值的不同自动选择%E或%f: %G
就跟前面说用\进行转义一样,这里用%作为格式标记的标识,也有一个%本身应该如何输出的问题。如果要在”格式标记字符串“中输出%本身,可以用%%来表示。
上面说的只是格式标记的最简间的形式,来看复杂一点的:

‘%6.2f’ % 1.235
在这种形式中,在f的前面出现了一个类似小数的6.2它表示的意思是,总共输出的长度为6个字符,其中小数2位。还有更复杂的:

‘%06.2f’ % 1.235
在6的前面多了一个0,表示如果输出的位数不足6位就用0补足6位。这一行的输出为‘001.24’,可以看到小数也占用一位。类似于这里0这样的标记还有-、+。其中,-表示左对齐,+表示在正数前面也标上+号,默认是不加的。最后来看最复杂的形式:

‘%(name)s:%(score)06.1f’ %{'score':9.5, 'name':'newsim'}
这种形式只用在要输出的内容为dictionary(一种python的数据类型)时,小括号中的(name)和(score)对应于后面的键值对中的键。前面的例子可以看到,”格式标记字符串“中标记的顺序和"要输出的值组"中的值是一一对应的,有顺序,一对一,二对二。而在这种形式中,则不是,每个格式标记对应哪个值由小括号中的键来指定。这行代码的输出为:'newsim:0009.5'。

有时候在%6.2f这种形式中,6和2也不能事先指定,会在程序运行过程中再产生,那怎么输入呢,当然不能用%%d.%df或%d.%d%f。可以用%*.*f的形式,当然在后面的”要输出的值组“中包含那两个*的值。比如:'%*.*f' % (6, 2, 2.345)就相当于'%6.2f' % 2.345。

这是这本书到此为止看起来最复杂的内容。不过如果记不住,或不想那么耐烦,完全可以全部用%s代替,或者用多个"+"来构造类似的输出字符串。这里的%真有点除法的味道,怪不得设计者会选择用%这个除号。


象C 中的sprintf函数一样,可以用“%”来格式化字符串。

Table 3.1. 字符串格式化代码

格式 描述
%% 百分号标记
%c 字符及其ASCII码
%s 字符串
%d 有符号整数(十进制)
%u 无符号整数(十进制)
%o 无符号整数(八进制)
%x 无符号整数(十六进制)
%X 无符号整数(十六进制大写字符)
%e 浮点数字(科学计数法)
%E 浮点数字(科学计数法,用E代替e)
%f 浮点数字(用小数点符号)
%g 浮点数字(根据值的大小采用%e或%f)
%G 浮点数字(类似于%g)
%p 指针(用十六进制打印值的内存地址)
%n 存储输出字符的数量放进参数列表的下一个变量中
分享到:
评论

相关推荐

    formatstring:一个C ++ 14类型的安全格式字符串库,深受Python的str.format()函数启发

    # include < formatstring> using namespace formatstring ; int main () { // create a temp. formatting object that gets written to cout std::cout << format ( " hex: {:#x}, centerd: {:_^20}, ...

    前端项目-string-format.zip

    前端项目-string-format,将“format”方法添加到“string.prototype”中。灵感来源于python的“str.format()”。

    python中string模块属性以函数应用-供大家学习研究参考

    def format_field(self, value, format_spec): return format(value, format_spec) def convert_field(self, value, conversion): # do any conversion on the resulting object if ...

    Python任意字符串转16, 32, 64进制的方法

    Python字符串转数字 import binascii s = 'test123456test' str_16 = binascii.b2a_hex(s.encode('utf-8')) # 字符串转16进制 print(str_16) def baseN(num, b): return ((num == 0) and 0) or \ (baseN(num...

    python工程师送个刚入门童鞋们的的福利:Python实现string字符串连接的8种方法

    文章目录一. str1+str2二....本文实例总结了Python实现string字符串连接的方法。分享给大家供大家参考,具体如下: 以下基于python 2.7,代码片段真实有效。 一. str1+str2 string类型 ‘+’号连接 >>>

    【Python】format()格式化输出—学习笔记

    目录一、旧式 % 格式化输出二、format格式化输出定位...b = "string" print("这是一个字符%c和 一段字符串%s" % (a, b)) 保留小数 a = 520.1314666 print("保留四位小数%.4f" % a) 二、format格式化输出 定位输出 first

    python3.6.5参考手册 chm

    Python参考手册,官方正式版参考手册,chm版。以下摘取部分内容:Navigation index modules | next | Python » 3.6.5 Documentation » Python Documentation contents What’s New in Python What’s New In ...

    word-replace:JavaScript等效于Python的String对象上的format方法

    word-replace.js的灵感来自于Python在字符串对象上的format方法。 安装 通过以下其中一种方式获取单词替换: 下载word-replace.js并将文件放置在您的工作文件夹中。 凉亭bower install word-replace NPM npm ...

    一文了解python 3 字符串格式化 F-string 用法

    在Python 3.6之前,有两种将Python表达式嵌入到字符串文本中进行格式化的主要方法:%-formatting和str.format()。 在本文后面,会详细介绍f-字符串的用法. 在此之前,让我们先来复习一下python中字符串格式化的方法...

    f2format:用于Python 3.6格式的字符串文字(f字符串)的Backport编译器

    对于现在已经习惯使用f-string的用户, f2format通过将f-string转换为str.format表达式,提供了一个智能但不完善的backport编译器解决方案,这保证了您始终在Python 3.6中编写f-string 。风味,然后再编译以实现...

    python教程答案第三章-Python基础教程(第三章).pdf

    python教程答案第三章_Python基础教程(第三章) 字符串格式化: format = "hello %s,%s enough for ya" // format称为格式化字符串 value = ('world', 'hot') print format % value 模板字符串: from string ...

    Beginning Python (2005).pdf

    The E-mail File Format 311 MIME Messages 313 MIME Encodings: Quoted-printable and Base64 313 MIME Content Types 314 Try It Out: Creating a MIME Message with an Attachment 315 MIME Multipart ...

    详解C++中十六进制字符串转数字(数值)

    用 法: int sscanf(char *string, char *format[,argument,…]);  以上的 format 为 %x 就是将字符串格式化为 16 进制数  例子:  #include void main() { char* p = 0x1a; int nValude = 0; sscanf(p, ...

    msgpack-python-0.4.2.tar

    *raw* was bytes or string type like Python 2's ``str``. To distinguish string and bytes, msgpack 2.0 adds *bin*. It is non-string binary like Python 3's ``bytes``. To use *bin* type for packing ``...

    python将人民币转换大写的脚本代码

    转换数字为大写货币格式( format_word.__len__() – 3 + 2位小数 ) change_number 支持 float, int, long, string “”” format_word = [“分”, “角”, “元”, “拾”,”百”,”千”,”万”, “拾”,”百”...

    python(5).docx

    for i in a: s=s+float(i) print(len(a)) print("{:.3f}".format(s)) Python中的spilt方法只能通过指定的某个字符分割字符串,如果需要指定多个字符,需要用到re模块里的split方法。 import re s=input() x=re....

    全面的Python备忘单

    全面的Python备忘单:Contents 1.... Types: Type, String, Regular_Exp, Format, Numbers, Combinatorics, Datetime.3. Syntax: Args, Inline, Closure, Decorator, Class, Duck_Type, Enum, Exception.

    Python解析json时提示“string indices must be integers”问题解决方法

    本文实例讲述了Python解析json时提示“string indices must be integers”问题解决方法。分享给大家供大家参考,具体如下: import json,但是出现了一个奇怪的问题: string indices must be integers 这个错误告诉...

    python爬取淘宝商品信息

    ulist.append([tds[0].string, tds[1].string, tds[2].string, tds[3].string]) def printUnivList(ulist, num): print("{:^10}\t{:^6}\t{:^6}\t{:^16}".format("排名","学校名称","地区","总分")) for i in ...

Global site tag (gtag.js) - Google Analytics