python字符串格式化

1.关于python的字符串格式化

在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 存储输出字符的数量放进参数列表的下一个变量中

2.Python如何格式化输出字符串

python一共有两种格式化输出语法, 一种是类似于C语言printf的方式,称为 Formatting Expression >>>print '%s %d-%d' % ('hello', 7, 1) 'hello 7-1' 另一种是类似于C#的方式,称为String Formatting Method Calls >>>print '{0} {1}:{2}'.format('hello', '1', '7') 'hello 1:7' 第一种方式可以指定浮点数的精度,例如 >>> print'%.3f' % 1.234567869 '1.235' 运行时动态指定浮点数的精度 但是当代码在运行中如何动态地通过参数来指定浮点数的精度呢? python的神奇之处在于它又提供了一种非常方便的语法。

只需要在 typecode(这里是f)之前加一个 *,浮点数的精度就用它前面的数字来指定。 >>> for i in range(5): 。

print'%.*f' % (i, 1.234234234234234) 。 '1' '1.2' '1.23' '1.234' '1.2342' 通过输出结果可以看出,精度都是在运行时动态指定,这样就省去了格式化字符串的拼凑。

使用 String Formatting Method Calls 可以更简洁地完成功能。 >>> for i in range(5): 。

print'{0:.{1}f}'.format(1 / 3.0, i) 。 '0' '0.3' '0.33' '0.333' '0.3333' 附录是一些常用用法—— python print格式化输出。

1. 打印字符串 print ("His name is %s"%("Aviad")) 2.打印整数 print ("He is %d years old"%(25)) 3.打印浮点数 print ("His height is %f m"%(1.83)) 4.打印浮点数(指定保留小数点位数) print ("His height is %.2f m"%(1.83)) 5.指定占位符宽度 print ("Name:%10s Age:%8d Height:%8.2f"%("Aviad",25,1.83)) 6.指定占位符宽度(左对齐) print ("Name:%-10s Age:%-8d Height:%-8.2f"%("Aviad",25,1.83)) 7.指定占位符(只能用0当占位符?) print ("Name:%-10s Age:%08d Height:%08.2f"%("Aviad",25,1.83)) 8.科学计数法 format(0.0015,'.2e')。

3.python字符串格式化什么意思

python字符串格式化的意思就是用format函数格式化字符串的用法。

用法:它通过{}和:来代替传统%方式。

1、使用位置参数

要点:从以下例子可以看出位置参数不受顺序约束,且可以为{},只要format里有相对应的参数值即可,参数索引从0开,传入位置参数列表可用*列表

>>> li = ['hoho',18]

>>> 'my name is {} ,age {}'.format('hoho',18)

'my name is hoho ,age 18'

>>> 'my name is {1} ,age {0}'.format(10,'hoho')

'my name is hoho ,age 10'

>>> 'my name is {1} ,age {0} {1}'.format(10,'hoho')

'my name is hoho ,age 10 hoho'

>>> 'my name is {} ,age {}'.format(*li)

'my name is hoho ,age 18'2、使用关键字参数

要点:关键字参数值要对得上,可用字典当关键字参数传入值,字典前加**即可

>>> hash = {'name':'hoho','age':18}

>>> 'my name is {name},age is {age}'.format(name='hoho',age=19)

'my name is hoho,age is 19'

>>> 'my name is {name},age is {age}'.format(**hash)

'my name is hoho,age is 18'3、填充与格式化

:[填充字符][对齐方式 <^>;][宽度]

>>> '{0:*>10}'.format(10) ##右对齐

'********10'

>>> '{0:*<10}'.format(10) ##左对齐

'10********'

>>> '{0:*^10}'.format(10) ##居中对齐

'****10****'4、精度与进制

>>> '{0:.2f}'.format(1/3)

'0.33'

>>> '{0:b}'.format(10) #二进制

'1010'

>>> '{0:o}'.format(10) #八进制

'12'

>>> '{0:x}'.format(10) #16进制

'a'

>>> '{:,}'.format(12369132698) #千分位格式化

'12,369,132,698'5、使用索引

>>> li

['hoho', 18]

>>> 'name is {0[0]} age is {0[1]}'.format(li)

'name is hoho age is 18

4.python字符串格式化什么意思

python字符串格式化的意思就是用format函数格式化字符串的用法。

用法:它通过{}和:来代替传统%方式。1、使用位置参数要点:从以下例子可以看出位置参数不受顺序约束,且可以为{},只要format里有相对应的参数值即可,参数索引从0开,传入位置参数列表可用*列表>>> li = ['hoho',18]>>> 'my name is {} ,age {}'.format('hoho',18)'my name is hoho ,age 18'>>> 'my name is {1} ,age {0}'.format(10,'hoho')'my name is hoho ,age 10'>>> 'my name is {1} ,age {0} {1}'.format(10,'hoho')'my name is hoho ,age 10 hoho'>>> 'my name is {} ,age {}'.format(*li)'my name is hoho ,age 18'2、使用关键字参数要点:关键字参数值要对得上,可用字典当关键字参数传入值,字典前加**即可>>> hash = {'name':'hoho','age':18}>>> 'my name is {name},age is {age}'.format(name='hoho',age=19)'my name is hoho,age is 19'>>> 'my name is {name},age is {age}'.format(**hash)'my name is hoho,age is 18'3、填充与格式化:[填充字符][对齐方式 <^>][宽度]>>> '{0:*>10}'.format(10) ##右对齐'********10'>>> '{0:*<10}'.format(10) ##左对齐'10********'>>> '{0:*^10}'.format(10) ##居中对齐'****10****'4、精度与进制>>> '{0:.2f}'.format(1/3)'0.33'>>> '{0:b}'.format(10) #二进制'1010'>>> '{0:o}'.format(10) #八进制'12'>>> '{0:x}'.format(10) #16进制'a'>>> '{:,}'.format(12369132698) #千分位格式化'12,369,132,698'5、使用索引>>> li['hoho', 18]>>> 'name is {0[0]} age is {0[1]}'.format(li)'name is hoho age is 18。

5.python3中format怎么用

python格式化字符串有%和{}两种 字符串格式控制符.字符串输入数据格式类型(%格式操作符号)%%百分号标记%c字符及其ASCII码%s字符串%d有符号整数(十进制)%u无符号整数(十进制)%o无符号整数(八进制)%x无符号整数(十六进制)%X无符号整数(十六进制大写字符)%e浮点数字(科学计数法)%E浮点数字(科学计数法,用E代替e)%f浮点数字(用小数点符号)%g浮点数字(根据值的大小采用%e或%f)%G浮点数字(类似于%g)%p指针(用十六进制打印值的内存地址)%n存储输出字符的数量放进参数列表的下一个变量中。

6.看到一段Python字符串格式化的代码,看不懂一个地方,请高手讲解一

格式化字符串%号后面的星号表示用参数替换宽度值,所以在print中要给出两个参数,一个用于替换星号,一个是实际打印参数,比如

print "%-*s"%(15,"this is a test")

等于 print "%-15s"%"this is a test"

表示打印字符串"this is a test",向左对齐(减号表示左对齐),这个字符串打印宽度为15(不足部分补空格)

所以这个程序用item_width和price_wdith指定了打印宽度

7.Python里的字符串格式化%与format有区别吗,一般用哪种比较好,

字符串格式化% 就是C里的printf; format是python 字符串自己的方法, 推荐用format,因为比较灵活

谁说pythonic解决问题一般不是只有一种方法,以前的说法是应该是只有一种最优办法,但现在不是这样了,python的流行使python项目百花齐放 ,举个例子就拿web微框架来说,有flask,bottle,其实两个框架都很相似,实现相同功能 ,你可以用前一个 ,也可以用后一个,他们执行的效能都是差不多的, 只看你喜欢那个就用那个

python字符串格式化

转载请注明出处代码入门网 » python字符串格式化

资讯

phprubyPython

阅读(8)

本文主要为您介绍phprubyPython,内容包括php和python和ruby,php、ruby和python哪种语言的学习周期短,php、ruby和python哪种语言的学习周期短。perl基本已经被淘汰,在各方面几乎已经没有优势,虽然说还正在开发perl6啊什么的,不过基本上大势已

资讯

pythonsyspath

阅读(8)

本文主要为您介绍pythonsyspath,内容包括python的sys.path是从什么地方读取的,pythonsys.path从哪里,pythonsys.path默认值哪儿设置。sys模块包含了与Python解释器和它的环境有关的函数,这个你可以通过dir(sys)来查看他里面的方法和成员属性

资讯

学Python对java

阅读(3)

本文主要为您介绍学Python对java,内容包括JavaVSPython应该先学哪个,学Java还是学python好呢,Python和java学哪个好了。Java和python犹如北乔峰南慕容,竞争不相上下。如果有能力同时学习那再好不过了,但很多刚刚接触IT行业的小伙伴在学习初期

资讯

一个python程序

阅读(2)

本文主要为您介绍一个python程序,内容包括用python编写一个程序,如何用python运行一个程序,用python编写一个简单的程序。ic=float(input(请输入路程(单位为公里km):))sj=float(input(请输入等待时间(单位为分钟min):))t

资讯

python指定目录

阅读(3)

本文主要为您介绍python指定目录,内容包括python中怎样转到指定目录,怎么用python在指定目录建一个文件,怎么在Python进入指定文件夹。例如使用IDLE编译python代码时,可以使用os.chdir转到指定目录import os.os.getcwd() #get cur

资讯

centospython安装pip

阅读(2)

本文主要为您介绍centospython安装pip,内容包括如何在centos6.4上安装pip,如何在centos中安装pip,centos怎么安装pythonpip。之前有的朋友问我,CentOS版本怎么安装python的pip,我之前给出的Ubuntu下apt-get的方法ubuntu 需要先安装下

资讯

python覆盖

阅读(2)

本文主要为您介绍python覆盖,内容包括求教Python升版本后怎么覆盖原版本,求教Python升版本后怎么覆盖原版本,关于python的覆盖cmp的两点问题。__cmp__对 int、str 等内置数据类型排序时,Python的 sorted() 按照默认的比较函数 cmp 排序,但是,如

资讯

pythondata

阅读(7)

本文主要为您介绍pythondata,内容包括python中某量后接一个.data[]是什么意思,python中某量后接一个.data[]是什么意思,python爬虫data是什么意思。用pandas中的DataFrame时选取行或列:import numpy as npimport pandas as pdfrom p

资讯

linux服务器python

阅读(6)

本文主要为您介绍linux服务器python,内容包括linux下使用python访问服务器中文件,在linux服务器上同时安装python2.6和python3,如何在linux服务器上用PHP执行python脚本。我估计你用的是centos吧,因为centos的yum以来python2.6,所以默认安装

资讯

pythonif判断语句

阅读(6)

本文主要为您介绍pythonif判断语句,内容包括刚自学python,用if判断语句怎么编写个程序,,pythonif语句可以多条件判断么,pythonif语句可以多条件判断么。i=1时,第二个for语句执行n次;i=2时,第二个for语句执行n-1次;i=3时,第二个for语句执行n-2次.

资讯

python写入xml

阅读(8)

本文主要为您介绍python写入xml,内容包括如何用Python创建生成xml文档文件的方法,如何用Python创建生成xml文档文件的方法,python解析xml,包含中文,gb2312编码修改xml后重新写入xml有些。内存数据产生 2、产生xml内存对象(也就是DOM树) 3、产

资讯

python和php

阅读(8)

本文主要为您介绍python和php,内容包括python与php的区别是什么,php和python哪个更有前途在国内的未来,Python和PHP有什么区别。输出、数据类型、访问权限、定义变量和方法不同输出Python: print 默认换行,不换行要加逗号。PHP: echo 可以输

资讯

python官网

阅读(7)

本文主要为您介绍python官网,内容包括python3.4.0官网怎么下,如何安装python,python官网安装选择哪个。首先,需要到python的官方网站下载python的安装包。2、打开官方网站之后,点击“Downloads”一栏,然后在弹出的窗口选择“

资讯

python树的遍历

阅读(7)

本文主要为您介绍python树的遍历,内容包括python二叉树先序遍历什么意思,python怎么用递归遍历多层目录树,求一个python的三叉树算法。Python实现递归遍历指定文件目录(startdir),从而找到所有与指定的文件或目录(target)名相同的文件或目录的绝

资讯

phprubyPython

阅读(8)

本文主要为您介绍phprubyPython,内容包括php和python和ruby,php、ruby和python哪种语言的学习周期短,php、ruby和python哪种语言的学习周期短。perl基本已经被淘汰,在各方面几乎已经没有优势,虽然说还正在开发perl6啊什么的,不过基本上大势已

资讯

pythonsyspath

阅读(8)

本文主要为您介绍pythonsyspath,内容包括python的sys.path是从什么地方读取的,pythonsys.path从哪里,pythonsys.path默认值哪儿设置。sys模块包含了与Python解释器和它的环境有关的函数,这个你可以通过dir(sys)来查看他里面的方法和成员属性

资讯

学Python对java

阅读(3)

本文主要为您介绍学Python对java,内容包括JavaVSPython应该先学哪个,学Java还是学python好呢,Python和java学哪个好了。Java和python犹如北乔峰南慕容,竞争不相上下。如果有能力同时学习那再好不过了,但很多刚刚接触IT行业的小伙伴在学习初期

资讯

一个python程序

阅读(2)

本文主要为您介绍一个python程序,内容包括用python编写一个程序,如何用python运行一个程序,用python编写一个简单的程序。ic=float(input(请输入路程(单位为公里km):))sj=float(input(请输入等待时间(单位为分钟min):))t

资讯

python指定目录

阅读(3)

本文主要为您介绍python指定目录,内容包括python中怎样转到指定目录,怎么用python在指定目录建一个文件,怎么在Python进入指定文件夹。例如使用IDLE编译python代码时,可以使用os.chdir转到指定目录import os.os.getcwd() #get cur

资讯

centospython安装pip

阅读(2)

本文主要为您介绍centospython安装pip,内容包括如何在centos6.4上安装pip,如何在centos中安装pip,centos怎么安装pythonpip。之前有的朋友问我,CentOS版本怎么安装python的pip,我之前给出的Ubuntu下apt-get的方法ubuntu 需要先安装下

资讯

python覆盖

阅读(2)

本文主要为您介绍python覆盖,内容包括求教Python升版本后怎么覆盖原版本,求教Python升版本后怎么覆盖原版本,关于python的覆盖cmp的两点问题。__cmp__对 int、str 等内置数据类型排序时,Python的 sorted() 按照默认的比较函数 cmp 排序,但是,如

资讯

pythoncoding

阅读(3)

本文主要为您介绍pythoncoding,内容包括python中#coding:gbk有什么用,Pythoncoding用,SublimeText与Pycharm哪个更好,怎么在python加入#/usr/bin/envpythoncoding=utf8。它是一种编码格式,简单说明是:文件说明指令来确定不同的环境进行不同的

资讯

毕业设计python

阅读(1)

本文主要为您介绍毕业设计python,内容包括用python做毕业设计,做个什么题目稍微容易一点,用Python做毕业设计选什么项目比较好,刚刚接触python,正好赶上毕设,想做python,由于是新手,所以想拜。首先你选择Python就很好,且不说Python本身很简

资讯

pythonlinux开发

阅读(1)

本文主要为您介绍pythonlinux开发,内容包括如何在linux下开发python程序,pycharm怎么开发linux程序,linux和python先学哪个。众所周知,系统管理员需要精通一门脚本语言,而且招聘机构列出的职位需求上也会这么写。大多数人会认为 Bash (或者其

资讯

python上海

阅读(1)

本文主要为您介绍python上海,内容包括上海python培训学费多少钱老男孩培训机构多少钱,想学习python,麻烦问一下上海哪家比较好一点的培训机构有这个课程,上海python就业前景是否值得期待。优点 门槛低,上手快; 2、比 R 更具有通用性和实用性

资讯

python程序运行时

阅读(1)

本文主要为您介绍python程序运行时,内容包括分析python程序运行时间的几种方法,python的程序怎么运行,如何运行Python程序。你在windows下根本不用这么麻烦: 首先,比如你的程序名字是 test.py 如果你想调用某个具体函数,就自己写一个的文件,比

资讯

python在线编译

阅读(1)

本文主要为您介绍python在线编译,内容包括python在线编译器哪个,求一个好的免费的Python编译器,最好是直接丢链接,谢谢大佬,什么软件可以编译Python。实际上python 是脚本语言解释执行的,并不存在编译这个概念。用python -m py_compile file

资讯

pythonascii字符

阅读(1)

本文主要为您介绍pythonascii字符,内容包括python判断纯ASCII字符串怎么做,如何使用Python获得一个字符的ASCII值,python怎么判断ascii字符串问题。如果要判断某路径是否包换中文,可以用正则表达式判断是否含有双字节字符>>> import re>>> r

资讯

python进程通信

阅读(1)

本文主要为您介绍python进程通信,内容包括python进程间通信怎么理解,python进程间通信怎么理解,python进程间通信怎么理解。在2.6才开始使用multiprocessing 是一个使用方法类似threading模块的进程模块。允许程序员做并行开发。并且可以在

资讯

eclipse运行python

阅读(1)

本文主要为您介绍eclipse运行python,内容包括如何在eclipse中运行python,如何在eclipse中运行python,怎么用eclipse打开python项目。下载python下载eclipse假设有上面两个,下载一个Python的Eclipse插件pydev下载完后将其解压到Eclipse的目

资讯

python类的self

阅读(1)

本文主要为您介绍python类的self,内容包括python怎么理解类和self的用法和含义,python怎么理解类和self的用法和含义,python中self是什么意思。python的class保留了语言在进化过程中的一些遗迹。对象这种概念,可以追溯到C语言中大量使用的结

资讯

数组长度python

阅读(1)

本文主要为您介绍数组长度python,内容包括python数组要先定义长度吗,python数组要先定义长度吗,python如何输入一个长度不定的数组。视情况而定如果你的数来组是追加一个元素的可以不用定义长度如果你初始化一个列自表然后要修改其中的值的