变量与字符串的连接 - format、格式化字符串

变量与字符串的连接

先当以如下三个变量:

name = ‘wwb‘

age = ‘17‘

job = ‘study‘

方法一:利用+号进行连接

>>> info1 = ‘‘‘Welcome to ‘‘‘ + name +‘‘‘‘s code kingdom

... Name:‘‘‘ + name +‘‘‘

... Age:‘‘‘ + age +‘‘‘

... Job:‘‘‘ + job

>>> print(info1)

Welcome to wwb‘s code kingdom

Name:wwb

Age:17

Job:study

配合三引号可以换行输出且连接变量与字符串

方法二:利用格式化字符串进行连接

>>> info2 = ‘‘‘Welcome to %s‘s code kingdom

... Name:%s

... Age:%s

... Job:%s‘‘‘ % (name, name, age, job)

>>> print(info2)

Welcome to wwb‘s code kingdom

Name:wwb

Age:17

Job:study

我们经常会输出类似 “亲爱的xxx你好!你xx月的话费是xx,余额是xx” 之类的字符串,而xxx的内容都是根据变量变化的,所以,需要一种简便的格式化字符串的方式。

python中%就是用来格式化字符串的。在字符串内部,用%s表示字符串,%d表示整数,字符串里有几个占位符,后面就跟几个值或变量,顺序要一一对应。如果只有1个占位符则后面可以省略括号。

>>> ‘hello ,%s‘ % ‘world‘

‘hello ,world‘

>>> ‘hello %s,hello %s‘ % (‘world‘,‘tom‘)

‘hello world,hello tom‘

常用的占位符

%d              整数

%f              浮点数

%s              字符串

%x              十六进制

%d:

在%与d之间加非0的数字表示这个占位符最少的长度(长度数值)。若‘值长度‘小于‘长度数值‘则将值放在最后(  为空格)

>>> ‘%d-%2d‘ % (3, 3)

‘3- 3‘

在%与长度数值之间加0,表示在‘值长度‘小于‘长度数值‘时自动补‘0’

>>> ‘%2d-%02d‘ % (3, 3)

‘ 3-03‘

%f:

%f默认保留6位小数,

>>> ‘%f‘ % 1

‘1.000000‘

指定保留的小数位数在%与f之间加 ‘.n‘(n为位数)

例如:保留3位小数和4位小数

>>> ‘%.3f-%.4f‘ % (1,2)

‘1.000-2.0000‘

若是想输出一个‘%‘字符串就需要转义,用%%表示一个‘%‘字符

>>> ‘他的成绩比去年提升了%.2f%%‘ % 3.145926

‘他的成绩比去年提升了3.15%‘

方法三:format()方法

索引映射:

>>> info3 = ‘‘‘Welcome to {} ‘s code kindom

... Name:{}

... Age:{}

... Job:{}‘‘‘ .format(name,name,age,job)

>>> print(info4)

Welcome to wwb ‘s code kindom

Name:wwb

Age:17

Job:study

>>> info4 = ‘‘‘Welcome to {0} ‘s code kindom

... Name:{0}

... Age:{1}

... Job:{2}‘‘‘ .format(name,age,job)

>>> print(info4)

Welcome to wwb ‘s code kindom

Name:wwb

Age:17

Job:study

函数部分:

format(‘czlun‘, 17,)

#str类型要添加用引号

#‘czlun‘的key为0

#17的key为1,依次增加。

字符部分:

‘Name:{} Age:{}‘

#format中以{}作为占位符

#占位符里为空,则第一个占位符对应第一个值(对应key为0的值),依次增加

#占位符里为空,则占位符的数量不能大于函数内的值的数量

‘Name:{1} Age:{0} Name:{1}‘

#若想让每个占位符分别指向函数内的值,只需可以在占位符里填入对应的key

#函数内的值可以被非空占位符多次调用,所以可以出现非空占位符数量大于函数内的值的数量的情况

#注意:空占位符与非空占位符不可混用

任何情况下,函数内的值的数量大于占位符的数量都不会报错

例子:

>>> ‘Name:{1} Age:{0}‘.format(17, ‘czlun‘)

‘Name:czlun Age:17‘

>>> ‘Name:{} Age:{}‘.format(17, ‘czlun‘)

‘Name:17 Age:czlun‘

#可以出现非空占位符数量大于函数内的值的数量的情况

>>> ‘Name:{} Age:{}‘.format(17, ‘czlun‘, ‘haha‘)

‘Name:17 Age:czlun‘

>>> ‘Name:{1} Age:{0}‘.format(17, ‘czlun‘, ‘haha‘)

‘Name:czlun Age:17‘

#函数内的值可以被非空占位符多次调用,所以可以出现非空占位符数量大于函数内的值的数量的情况

>>> ‘Name:{1} Age:{0} Other:{1}‘.format(17, ‘czlun‘)

‘Name:czlun Age:17 Other:czlun‘

#占位符里为空,则占位符的数量不能大于函数内的值的数量

>>> ‘Name:{} Age:{} Other:{}‘.format(17, ‘czlun‘)

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

IndexError: tuple index out of range

关键字映射:

>>> info5 = ‘‘‘Welcome to {_name} ‘s code kindom

... Name:{_name}

... Age:{_age}

... Job:{_job}‘‘‘ .format(_name = name, _age = age, _job = job)

>>> print(info3)

Welcome to wwb ‘s code kindom

Name:wwb

Age:17

Job:study

函数部分:

format(_name = ‘czlun‘, _age = 17,)

#与索引映射不同的是,用关键字替代了索引号,更容易理解对应的值

字符部分:

‘Name:{_name} Age:{_age} Name:{_name}‘

#若想让每个占位符分别指向函数内的值,只需可以在占位符里填入对应的关键字

格式限定符

格式限定符是用:表示

填充与对齐

填充:

格式限定符后面带填充的长度

格式:{: Num}

>>> ‘{:5}‘.format(‘a‘)  #‘a‘长度为1,小于5,执行填充操作

‘a    ‘

>>> ‘{:5}‘.format(‘abcdefg‘)  #‘abcdefh‘长度为7,不小于5,不执行填充操作

‘abcdefg‘

#‘{:5}‘意义:用:表示填充的操作,5表示填充的长度,当值的长度小于5时,便会用空格在末尾将长度补到5(填充结果默认是左对齐)

对齐:

格式限定符后面带对齐符(^、<、>分别是居中、左对齐、右对齐),后面带宽度

格式:

{:^|<|>Num}

>>> ‘{:^5}‘.format(‘a‘)

‘  a  ‘

>>> ‘{:<5}‘.format(‘a‘)

‘a    ‘

>>> ‘{:>5}‘.format(‘a‘)

‘    a‘

用指定字符进行填充:

格式限定符与对齐符中间加一个字符,则使用该字符进行填充,不指定的话默认是用空格填充

>>> ‘{:*^5}‘.format(‘a‘)

‘**a**‘

>>> ‘{:*<5}‘.format(‘a‘)

‘a****‘

>>> ‘{:*>5}‘.format(‘a‘)

‘****a‘

指向函数内的值:

是不是觉得用了这个格式限定符就无法输出函数内其他的值了?

若想让每个占位符分别指向函数内的值,只需可以在格式限定符前填入对应的key

>>> ‘{0:*^5}‘.format(‘a‘, ‘b‘, ‘c‘)

‘**a**‘

>>> ‘{1:*<5}‘.format(‘a‘, ‘b‘, ‘c‘)

‘b****‘

>>> ‘{2:*>5}‘.format(‘a‘, ‘b‘, ‘c‘)

‘****c‘

数据类型

‘f‘ - 浮点数。将数值以浮点数输出

‘d‘ - 十进制。将数字以十进制进行输出。

‘b‘ - 二进制。将数字以二进制数进行输出。

‘o‘ - 八进制。将数字以八进制数进行输出。

‘x‘ - 十六进制。将数字以十六进制数进行输出。

‘c‘ - 字符。在打印之前将整数转换成对应的Unicode字符串。

‘e‘ - 幂符号。用科学计数法打印数字。用‘e‘表示幂。

‘%‘ - 百分数。将数字以百分数输出

‘,‘ - 金额千位分隔符。

#f  .2保留两位小数 .1保留1位小数 .0不保留小数

>>> ‘{:f}‘.format(10/3)

‘3.333333‘

>>> ‘{:.2f}‘.format(10/3)

‘3.33‘

>>> ‘{:.1f}‘.format(10/3)

‘3.3‘

>>> ‘{:.0f}‘.format(10/3)

‘3‘

#d、b o、x、c

>>> ‘{:d}‘.format(10)

‘10‘

>>> ‘{:b}‘.format(3)

‘11‘

>>> ‘{:o}‘.format(10)

‘12‘

>>> ‘{:x}‘.format(10)

‘a‘

>>> ‘{:c}‘.format(65)

‘A‘

#e  .2保留两位小数 .1保留1位小数 .0不保留小数

>>> ‘{:e}‘.format(1999)

‘1.999000e+03‘

>>> ‘{:.3e}‘.format(1999)

‘1.999e+03‘

>>> ‘{:.2e}‘.format(1999)

‘2.00e+03‘

>>> ‘{:.1e}‘.format(1999)

‘2.0e+03‘

>>> ‘{:.0e}‘.format(1999)

‘2e+03‘

#%  .2保留两位小数 .1保留1位小数 .0不保留小数

>>> ‘{:%}‘.format(3/10)

‘30.000000%‘

>>> ‘{:.2%}‘.format(3/10)

‘30.00%‘

>>> ‘{:.1%}‘.format(3/10)

‘30.0%‘

>>> ‘{:.0%}‘.format(3/10)

‘30%‘

#,

>>> ‘{:,}‘.format(100861001010000)

‘100,861,001,010,000‘

时间: 2024-10-12 22:47:20

变量与字符串的连接 - format、格式化字符串的相关文章

string.format格式化字符串中转义大括号“{}”

用C#写程序操作Excel,读取单元格内容根据所需格式生成字符串,使用String.Format(string format,object arg0)方法.以前只知"{0}"为索引占位符(即格式项),与参数列表中的第一个对象相对应,格式设置过程将每个格式项替换为对应对象的值的文本表示形式.但这次需将参数对象格式成一对大括号括起来的格式,即返回字符串"{对象arg0的文本表示形式}". //直接加大括号 String.Format("{{0}}",

.NET C# Tostring() format 格式化字符串大全

C 货币 2.5.ToString("C") ¥2.50 D 十进制数 25.ToString("D5") 00025 E 科学型 25000.ToString("E") 2.500000E+005 F 固定点 25.ToString("F2") 25.00 G 常规 2.5.ToString("G") 2.5 N 数字 2500000.ToString("N") 2,500,000.0

Python用format格式化字符串

format是是python2.6新增的一个格式化字符串的方法,相对于老版的%格式方法,它有很多优点. 1.不需要理会数据类型的问题,在%方法中%s只能替代字符串类型 2.单个参数可以多次输出,参数顺序可以不相同 3.填充方式十分灵活,对齐方式十分强大 4.官方推荐用的方式,%方式将会在后面的版本被淘汰 format的一个例子 print 'hello {0}'.format('world') 会输出hello world format的格式 replacement_field     ::=

String.format() 格式化字符串

1.几种常见的转换符 转换符 说明 实例 %d 整数类型(十进制) 99 %f 浮点类型 99.99 %s 字符串类型 "mingrisoft" %c 字符类型 'm' %b 布尔类型 true %% 百分比类型 % %n 换行符 package com.app; public class Test1 { public static void main(String[] args) { String str1 = String.format( "Hi,%s" , &

WPF中XAML中使用String.Format格式化字符串示例

货币格式 <TextBlock Text="{Binding Price, StringFormat={}{0:C}}" /> // $123.46 货币格式,一位小数 <TextBox Text="{Binding Price, StringFormat={}{0:C1}}" /> // $123.5 前文字 <TextBox Text="{Binding Price, StringFormat=单价:{0:C}}"

C# String.Format 格式化字符串 数字/时间

首先献给只想知道结果的人 格式化 DateTime 对象 标准 数字 格式化 Int Decimal Float Double 关于这一块一直不是很清楚,MSDN 上也不够清晰. 就花了点时间敲了一下. 原文地址:https://www.cnblogs.com/Aaxuan/p/9436912.html

Python 中格式化字符串 % 和 format 两种方法之间的区别

Python2.6引入了 format 格式化字符串的方法,现在格式化字符串有两种方法,就是 % 和 format ,具体这两种方法有什么区别呢?请看以下解析. # 定义一个坐标值 c = (250, 250) # 使用%来格式化 s1 = "敌人坐标:%s" % c 上面的代码很明显会抛出一个如下的TypeError: TypeError: not all arguments converted during string formatting 像这类格式化的需求我们需要写成下面丑陋

字符串的转义,格式化,拼接

字符串转义 转义符 "\" 转义字符串的意义在于将一些有特殊含义的字符标识为普通字符,在函数解析字符串时看到转义字符,就不再对其做做特殊处理,而是当做普通字符打印. 当反斜杠"\"位于行尾时,意味着换行.(一般只有在代码过长的情况下使用) str = 'hello,' 'world' print(str) >>> hello,world 如果反斜杠"\"所在的位置不是行尾,并且后接特殊字符时,则意味着"\"后

Python格式化字符串知多少

字符串格式化相当于字符串模板.也就是说,如果一个字符串有一部分是固定的,而另一部分是动态变化的,那么就可以将固定的部分做成模板,然后那些动态变化的部分使用字符串格式化操作符(%) 替换.如一句问候语:“Hello 李宁”,其中“Hello”是固定的,但“李宁”可能变成任何一个人的名字,如“乔布斯”,所以在这个字符串中,“Hello”是固定的部分,而“李宁”是动态变化的部分,因此,需要用“%”操作符替换“李宁”,这样就形成了一个模板. Hello %s 上面的代码中,“%”后面的s是什么呢?其实字