㈠ 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 存储输出字符的数量放进参数列表的下一个变量中
㈡ python中如何格式化代码
你的问题是什么?我没有理解。如果只是代码缩进的话。那只要不是notepad随便一个ide或编辑器都做的到。先把问题描述清楚。
㈢ python如何格式化∪盘
方式一:直接+拼接
print(src + username + " 年龄是:" + str(age))
回到顶部
方式二: f字符串表达式
# a、需要在字符串前面添加f
# b、可以在字符串中间使用{},花括号的中间可以写任何表达式(或变量)
# c、python3.6+的版本可用
info = f"我的名字是:{username} \t 年龄是:{age}"info1 = f"我的名字是:{username[:-1]} \t 年龄是:{age + 1}"print(info)print(info1)
回到顶部
方式三:使用format进行格式化
# a、{} 为占位符,format方法中的参数进行一一对应
# b、往往花括号的数量与format方法中的参数个数一致
# c、{}花括号中可以填写format方法参数的索引值
info2 = "我的名字是:{} \t 年龄是:{}".format(username, age)
info3 = "我的名字是:{2} \t 年龄是:{1} \t 我的分数为{0}".format(username, age, 99)print(info2)print(info3)
回到顶部
方式四:python2 中推荐方法
info4 = "我的名字是:%s 年龄是:%s 我的分数为:%s" % (username, age, 88)print("info4:", info4)
㈣ python 格式化日期
python格式化日期的方法:可以利用time.asctime(time.local(time.time()))函数来格式化日期。如果我们要获取当前日期,可以利用时间函数time()来获取。
㈤ python 的格式化输入
没有这样的格式,要么让用户分次输入,要么一次输入后,解析字符串赋给3个参数(":"分隔)
㈥ python格式化字符
第一个print有两个错误 %d是整数类型, %前面没逗号
print("let 's talk about %s"%(my_name))
第二个和第三错误是format前面是点, 不是逗号
print("he 's {} inches tall.".format(my_height))
㈦ python里的.format()是什么意思
format函数这是一种字符串格式化的方法,用法如str.format()。
基本语法是通过 {} 和 : 来代替以前的 % 。
以下展示两种主要用法:
(1)如:语句print("{:.2f}".format(3.1415926)),它的输出为3.14,可以看出命令为保留两位小数点。
(2)如:语句"{1} {0} {1}".format("hello", "world"),它的输出为'world hello world',可以看出format为他们设置了位置。
又如:语句print '{} *'.format(j)表示输出变量j的值以及乘号:j*,可以看出用在循环里可以输出一个乘法的等式。
又如:语句print "{} 对应的位置是 {{0}}".format("runoob"),它的输出为'runoob对应的位置是0'.
(7)python格式化扩展阅读:
如果在格式化数字时没有指定format,Format会提供与Str函数类似的功能,尽管它是国际化的。然而,以Format作用在正数上不会保留正负号空间,而以Str的话则会。
如果要格式化一个没有本地化的数值字符串,应该使用一个用户自定义的数值格式,以保证得到需要的外观。
注意如果Calendar属性设置是Gregorian ,并且format指定了日期格式,那么,提供的expression必须是Gregorian 。如果Visual BasicCalendar属性设置是 Hijri,则提供的的expression必须是Hijri 。
㈧ python3 格式化字符串
这个属于python语法问题, 语法就是规定, 你按照规定做就是了.
㈨ Python 格式化字符的问题
因为在python中,不管被除数和除数是整数还是小数,/的结果一定是浮点数(小数)。
而对于*而言,如果乘数和被乘数都是整数,结果依然是整数。
所以,只要循环中第一次执行else后,a就变成小数了,以后再执行if也好,else也好,a就都是小数了。
如果想输出整数,可以将a=a/2改成:a=int(a/2)。
㈩ Python字符串格式化问题
*,表示输出的字符的宽度,你给的例子,就是4个字符的宽度
又比如
>>> '%.*s%.*s'%(2, "abce", 3, "324223")
'ab324'
>>> '%.*s%*.s'%(2, "abce", 3, "324223")
'ab '
第一个:2个宽度所以只有ab,后面的只有3个宽度,就是324
需要注意. 和 *的先后顺序
第二个:2宽度,也是ab,后面由于.和*的顺序变了,没有输出字符,但给了3个宽度
======================================================================
这么给你说嘛: '%*.*s'%(10,2, "abce")
第一个*表示输出的‘内容’长度为10
第二个*表示‘abce’这个串,只取前两位,你可以理解为精度
s表示是字符串
结果为:8个空格 + ab
==========再来看你的问题=====================================
'%*.s' % (4,'hi')
我的疑问是为什么'hi'没有输出?如何理解?
[ans:没输出因为.后面没有给int值,所以没输出hi]
另外,点(.)后如果没有加精度值,机器将如何执行?
[ans:结果你已经看到了,没给值就不输出]
还有如果输出的是字符串,但是点(.)的前后都有星号(*),那么此时输出的字符串宽度到底是多少?
[ans:*.*,都给了值,第一个是输出字符串的宽度,第二个是取你给的字符串的宽度,上面给你举得例子, '%*.*s'%(10,2, "abce"),输出宽度为10,取 abce的前两个字符]
是以前面一个星号为准还是后面的那个?
[ans:同上]