python-03(入门基础篇3——字符串 的 基本常见语法 以及 format的用法)
- 1. 前言
- 1.1 体验python入门
- 1.2 官网参考
- 2. 字符串简单入门
- 2.1 简单介绍
- 2.2 拼接字符串(+)和 重复字符串(*)
- 2.3 相邻字符串自动拼接
- 2.4 换行输入字符串的方法
- 2.5
- 3. 索引 和 分片
- 3.1 索引
- 3.2 分片
- 3.2.1 切片常用语法 + 例子
- 3.2.2 总结
- 3.2.2.1 使用总结
- 3.2.2.2 使用总结的例子
- 4. 字符串常见方法
- 4.1 split()
- 4.2 index()
- 4.3 count()
- 5. printf 样式的字符串格式化
- 5.1 str.format()
- 5.1.1 按位置访问参数
- 5.1.2 通过名称访问参数
- 5.1.3 通过位置和名称混合使用来访问参数
- 5.1.4 访问参数的项(以及`*`的使用)
- 5.1.4.1 元组使用
- 5.1.4.2 列表使用
- 5.1.4.3 用字典传参
- 5.1.4.4 混合使用
- 5.1.4.5 附:按位置时(*)
- 5.1.4.6 总结:`*`的注意使用方法
- 5.2 printf 样式的字符串格式化
- 5.2.1 语法 + 例子
- 5.1.5 对齐
- 5.1.6 `:`号使用
- 5.1.7 官方文档
- 5.2.2 总结
1. 前言
1.1 体验python入门
- 关于 python 的入门,可以看下面的两篇文章,体验一下 python 语言的简洁语法,如下
- python-01(入门基础篇)
- python-02(入门基础篇2——基本常见语法)
1.2 官网参考
- 接下来针对字符串相关的语法做点练习,相关方法,太多,下面将针对性地做些简单的练习,当然也可以自己去官网看语法进行练习,官网地址如下:
https://docs.python.org/3.11/tutorial/index.html.
- 关于数字类型的就不用介绍了,比较简单,感兴趣的话,看上面两篇文章就行,也可以直接看官网上的简单例子,如下:
2. 字符串简单入门
2.1 简单介绍
- Python可以操作文本(由str类型表示,即所谓的“字符串”)和数字。这包括字符“!,单词“rabbit”,名字“Paris”,句子“get you back”。等等。“耶!😃”。它们可以用单引号(‘…’)或双引号(“…”)括起来,结果相同。
- 关于转义字符,看上面第一篇入门篇即可
2.2 拼接字符串(+)和 重复字符串(*)
- 如下:
'un' + 'ium' 'unium' 'un' * 2 'unun' 3 * 'un' 'ununun' 3 * 'un' + 'ium' 'unununium'
2.3 相邻字符串自动拼接
-
相邻的两个或多个字符串字面值(即括在引号之间的字面值)会自动连接起来。但是需要注意的是:此方法只适用于两个字面量,而不适用于变量或表达式。如下:
'lo' 've' 'love' 'p' 'y' 'th''on' 'python'
-
如果你想连接变量或者一个变量和一个字面值,使用
+
,如下:
2.4 换行输入字符串的方法
- 当你想要中断长字符串时(即:换行输入时),将几个字符串放在括号内,以便将它们连接在一起。如下:
2.5
3. 索引 和 分片
3.1 索引
- 字符串可以根据索引(下标)取值,第一个字符的索引为0。没有单独的字符类型;一个字符就是一个简单的字符串。
- 简单使用如下:
- 例1:
mesg = '我爱北京天安门' mesg[0] '我' mesg[2] '北'
- 例2: 获取字符串的长度、以及最后一个字符的取法,如下:
len(mesg) mesg[6] mesg[-1] mesg[len(mesg)-1]
- 例1:
- 循环打印如下:
for i in mesg: print(i , end=' ')
for i in range(len(mesg)): print(mesg[i],end='|')
3.2 分片
- 索引用于获取单个字符,但切片允许您获取子字符串。
3.2.1 切片常用语法 + 例子
- 语法如下:
mesg[m,n]
,从索引位置m(包括)到索引n(不包括)的字符,即左闭右开取字符。mesg[:4]
,字符从开头到索引位置4(不包含下标4)
mesg[:-1]
,字符从开头到索引位置-1(不包含下标-1),即:相当于截取掉最后一个字符。mesg[-5:]
,倒着取5个字符(最后一个下标为-1,往前直到-5开始取)mesg[2:]
,从位置2开始取(包含位置2),一直取到末尾的字符mesg[1:6:2]
,从位置1开始,到位置6(左闭右开),跨度为2
- 例子如下:
3.2.2 总结
3.2.2.1 使用总结
- 开头总是包括在内,结尾总是不包括在内。这确保了s[:i] + s[i:] 总是等于s。
mesg[:]
,相当于mesg[0:7]
的使用语法,由于是从头开始到结束,所以头尾两端都可以省略,最后只剩下一个:
了。- 倒排序
mesg[::-1]
mesg[-1:0:-1],从位置-1开始取,以跨度为-1,取到0的位置,实现倒序
3.2.2.2 使用总结的例子
- 如下:
4. 字符串常见方法
- 首先,参考官网,因为方法挺多的,官网地址:
https://docs.python.org/3.11/library/stdtypes.html#textseq. - 下面简单写几个,剩下的用到去官网拿
4.1 split()
-
如下:
'1.2.3.4'.split('.') '1.2.3.4'.split('.',maxsplit=2)
4.2 index()
- 返回下标索引的位置,如下:
4.3 count()
- 统计字符出现的个数,左闭右开,如下
- 好了,就简单几个吧,毕竟方法有点多,用到再说!
5. printf 样式的字符串格式化
5.1 str.format()
- 用于格式化字符串。可以接受无限个参数,可以指定顺序。返回结果为字符串。
5.1.1 按位置访问参数
-
不设置位置,不指定顺序,默认由左到右,如下:
'{}, {}, {}'.format('a', 'b', 'c') 'a, b, c' 'There are {} nationalities in {}'.format('56','China') 'There are 56 nationalities in China'
-
指定位置,如下:
'{2}, {1}, {0}'.format('a', 'b', 'c') 'c, b, a' '{1}, {2}, {0}'.format('a', 'b', 'c') 'b, c, a' 'There are {1} nationalities in {0}'.format('China','56') 'There are 56 nationalities in China'
-
参数的索引可以重复,如下:
'{0}{0}{1}'.format('1','0') '110' '{1}{0}{1}{1}'.format('0','2') '2022' '{0}{0}'.format('bala') 'balabala'
5.1.2 通过名称访问参数
- 如下:
'There are {number} nationalities in {country}'.format(country='China',number='56') 'There are 56 nationalities in China'
5.1.3 通过位置和名称混合使用来访问参数
-
语法如下:
'There are {0} nationalities in {country},and it is very {1}'.format('56','greate and strong',country='China') 'There are 56 nationalities in China,and it is very greate and strong'
-
注意问题,所有按位置的必须放在按名称的前面,否则报下名的错误,如下:
SyntaxError: positional argument follows keyword argument
5.1.4 访问参数的项(以及*
的使用)
5.1.4.1 元组使用
非*
使用,如下:coord = (1,3,2) 'X: {0[0]}; Y: {0[1]}; z: {0[2]}'.format(coord) info = ('56','China','greate and strong') 'There are {0[0]} nationalities in {0[1]},it is very {0[2]}'.format(info)
*
的使用如下:
- 多元组参数使用,如下:
- 语法如下:
str1 = ('I','love','you') str2 = ('he','hate','you') '{0[0]} {0[1]} {0[2]},but {1[0]} {1[1]} {1[2]}'.format(str1,str2) 'I love you,but he hate you' '{} {} {},but {} {} {}'.format(*str1,*str2) 'I love you,but he hate you'
- 说明:
传入的参数中指定位置“0[1]
”表示str1
这个参数,0表示第一个参数即str1,而0[1]中的1是表示str1中的第2个位置的值。‘1[0]
’是表示第二个参数 str2 的第一个值。
- 语法如下:
5.1.4.2 列表使用
- 列表的使用,与上面元组的使用几乎一样,简单截图看看,如下:
5.1.4.3 用字典传参
- 如下:
info = {'number':'56','country':'China'} 'There are {number} nationalities in {country}'.format(**info) 'There are 56 nationalities in China' info2 = {'number':'56','country':'China','desc':'greate and strong'} 'There are {number} nationalities in {country},and it is very {desc}'.format(**info2) 'There are 56 nationalities in China,and it is very greate and strong'
5.1.4.4 混合使用
-
注意:位置参数要在关键字参数前面,元组要在字典前面,如下:
str1 = ('come','on') list1 = ['you','me','she','he'] games = {'game1':'扑克','game2':'王者'} '听说,{2} 喜欢{game2},你知道吗'.format(*list1,**games) '听说,she 喜欢王者,你知道吗' '听说,{0[2]} 喜欢{game2},你知道吗'.format(list1,**games) '听说,she 喜欢王者,你知道吗' '听说,{0} 和 {1[0]} 一样,都喜欢{game2},你知道吗'.format('lucy',list1,**games) '听说,lucy 和 you 一样,都喜欢王者,你知道吗' '听说,{0} 和 {0} 一样,都喜欢{game2},你知道吗'.format('lucy',*list1,**games) '听说,lucy 和 lucy 一样,都喜欢王者,你知道吗' '听说,{0} 和 {1{0}} 一样,都喜欢{game2},你知道吗'.format('lucy',*list1,**games)
5.1.4.5 附:按位置时(*)
- 如下:
'{2}, {1}, {0}'.format(*'abc') 'c, b, a'
5.1.4.6 总结:*
的注意使用方法
-
对于
list1 = ['you','love','me']
,
在不使用*的时候,用{0[1]}
这中格式取值,这里的0指第一个参数list1,这里的1是list1里位置是1的数据(即:此处是love
),{0[0]}
取出来就是you
。
如下:'{0[0]}'.format(list1) 'you'
-
的如果使用
*
的话,在下面语句中,{0[2]}
中的 0 指的是 list1 中的位置为 0 的数据(即you
),2指的是 you 这个字符串的下标为 2 的字符==,如下:list1 = ['you','love','me'] '{0[2]}'.format(*list1)
5.2 printf 样式的字符串格式化
5.2.1 语法 + 例子
- 语法例子如下:
print('%(language)s' %{'language':"chinese"}) print('%(number)04d' %{"number":3}) print('%(number)f' %{"number":5}) print('There are %(number)d nationalities in %(country)s' %{'number':56,'country':"China"}) ……
5.1.5 对齐
- 官网例子,如下:
- 效果如下:
'{:<30}'.format('left aligned') '{:>30}'.format('right aligned') '{:^30}'.format('centered') '{:*^30}'.format('centered')
5.1.6 :
号使用
- 用
:
号替换%
,替换%+f
,%-f
和% f
并指定一个符号
# show only the minus -- same as '{:f}; {:f}'
'{:-f}; {:-f}'.format(3.14, -3.14)
- 使用逗号作为千位分隔符:
'{:,}'.format(1234567890)
5.1.7 官方文档
- 好了,更多内容请参考官网:
https://docs.python.org/3.11/library/string.html#formatstrings.
5.2.2 总结
- 长度修饰符
(h, l, or L)
可能存在,但会被忽略,因为Python不需要它-例如%ld与%d
相同。 - 转换类型有: