栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python基础总结(四) 字符串

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python基础总结(四) 字符串

目录

第四章  字符串

 一、字符串格式问题及转义字符:

 二、字符串的常见操作:

         (一)字符串的接拼:

         (二)字符串索引:

         (三)字符串分片:

          (四)字符串的不可变性:

          (五)字符串大小写转换方法:

           (六)字符串分割、组合、移除:

           (七)字符串查找与替换:

           (八)字符串对齐:

           (九)字符串格式化输出:

                         (1)%占位格式化字符串:

                          (2)format() 方法格式化字符串:


第四章  字符串

一、字符串格式问题及转义字符:

 由第一章基础总结,我们知道,字符串是一种用来表示文本的数据类型,它是由符号或者数值组成的一个连续序列。对字符串有了一定的了解。首先我们来看看一些平时容易犯的错误例子:

# 前后不统一:
name1 = '小明"
name2 = "小明'

# 使用了中文引号:
name1 = ‘小明’
name2 = “小明”

#多行输出有误:
poetry = '日暮苍山远,天寒白屋贫。
柴门闻犬吠,风雪夜归人。'
print(poetry)
# 报错:SyntaxError: bad token on line 1

 由上段代码可以总结出,我们平时容易犯的错误,如引号前后不统一、使用了中文引号、多行输出有误等。其中,多行输出,我们可以通过使用三引号''' ''' 来输出。不过,除了使用多行字符串来实现多行文本输出外,使用 n 也能达到一样的效果。n 被称为 换行符,用于文本间的换行。

常用的转义字符如下:(r:让转义字符失效。如:print(r'你n好')  #输出:你好)


 二、字符串的常见操作:

         (一)字符串的接拼:

通过 + 可以将两个字符串拼接,得到一个新的字符串。如下:

first_name = '史蒂夫'
last_name = '乔布斯'
# 使用 + 拼接字符串
full_name = first_name + '·' + last_name
print(full_name)
# 输出:史蒂夫·乔布斯

当我们把同一个字符串重复很多次的时候,我们可以使用多个 + 拼接,像下面这样:

str1 = '海草'
str2 = str1 + str1 + str1
print(str2)
# 输出:海草海草海草

上面那样的写法太麻烦了,你有没有想到更快捷的方法?对了,用 *,数学中的乘法是相同的数加起来的快捷方式,Python 中字符串的拼接操作也是如此。

str1 = '海草'
str2 = str1 * 3  # 相当于 str1 + str1 + str1
print(str2)
# 输出:海草海草海草

除此之外,Python中还有一些常用的字符串运算符,如下:

Python字符串运算符
操作符描述实例
+字符串连接如上面代码
*重复输出字符串如上面代码
[ ]通过索引获取字符串中的字符a[2]
[ : ]截取字符串中的一部分a[1:4]
in成员运算符,如果字符串中包含给定的字符,则返回True'H' in 'Hello'
not in成员运算符,如果字符串中不包含给定的字符,则返回True'M' in 'Hello'
r/R原始字符串,在转义字符中,可以使转义字符失效print(r'你n好')  
%格式字符串后面详解

         (二)字符串索引:

通过索引或反向索引的方式访问字符串中的字符。正向索引是从 0 开始计数,而反向索引则是从 -1 开始计数。如下:

str = 'Hello World'
print(str[6])  # 输出:W
print(str[-5])  # 输出:W

上段代码具体原理如下:

         (三)字符串分片:
string = 'Hello World'

# 从索引 0 开始,到索引 3 为止,不包括索引 3
print(string[0:3])
# 输出:Hel

# 如果第一个索引是 0,可以省略
print(string[:3])
# 输出:Hel

print(string[3:11])
# 输出:lo World

# 如果分片到末尾,后面也可以省略
print(string[3:])
# 输出:lo World

# 如果都省略,则是复制一个一样的字符串
print(string[:])
# 输出:Hello World

上面的这些例子中有两个注意点:

  1. 分片是半闭半开区间,即包含前面索引位置的元素,不包含后面索引位置的元素。比如:string[m:n] 获取的是字符串 string 中索引为 m 到 n-1 之间的元素(包括 m 和 n-1);
  2. 分片中前后索引的值是可以省略的,前索引省略默认为 0,后索引省略默认为序列长度。

 关于分片和索引的一个注意点:

string = 'Hello World'
print(string[0:100000])

 你猜猜运行结果是什么?是不是会报错?因为后面索引超出了字符串本身的长度。其实不然,分片超出范围是不会报错的。上段代码结果是:Hello World。(你可以把字符串想象成一根绳子,分片就是用刀将绳子切分开来。在字符串长度内分片相当于在绳子上切割,而超出范围相当于一刀砍到了空气,对于绳子来说没有影响。)

 这一点和索引取值是不同的,如果索引取值超出范围将会报错。比如将上面的第二行代码改成 print(string[100000]) 将会得到 IndexError: string index out of range(索引错误:字符串索引超出范围)的报错。如下:

string = 'Hello World'
print(string[100000])

# 输出:IndexError: string index out of range

          (四)字符串的不可变性:

字符串一旦创建后是不可改变的,这个属性和元组类似,通过索引来改变字符串中元素就会报错,那么我们怎样才能修改字符串的内容呢?答案是使用字符串分片和拼接去生成一个新的字符串,看个例子:

name = '鹿班七号'

name[0] = '鲁'
print(name)
# 报错:TypeError: 'str' does not support item assignment on line 2

new_name = '鲁' + name[1:]
print(new_name)
# 输出:鲁班七号

          (五)字符串大小写转换方法:

 

举例说明:

'abcd'.upper()  # 'ABCD'
'ABCD'.lower()  # 'abcd'
'ABCD'.capitalize()  # 'Abcd'
'1aBcD'.capitalize()  # '1abcd'
'this is an example string'.title()   # This Is An Example String
'5g is coming'.title()  # 5G Is Coming
'abcd'.swapcase()  # 'ABCD'

           (六)字符串分割、组合、移除:

 

 举例说明:

str = '$带-你-打-开-编-程-世-界-的-大-门$'
print('~'.join(str.split('-')).strip('$'))
# 上面代码相当于
# str = str.split('-')
# str = '~'.join(str)
# str = str.strip('$')

# 输出:带~你~打~开~编~程~世~界~的~大~门

除了上表中,strip()方法(移除字符串头尾指定字符)可以移除字符串中的指定字符外,Python中的 lstrip()方法(移除字符串头部指定字符) 和 rstrip() 方法(移除字符串尾部指定字符)也可以删除字符串中的指定字符。

           (七)字符串查找与替换:

 举例说明:

str = 'feel the change'

# 输出 str 中 e 的个数                   #输出:
print(str.count('e'))                   #4

# 输出 str 中 change 的索引值
print(str.find('change'))               #9

# 将 str 中的 change 替换为 CHANGE
print(str.replace('change', 'CHANGE'))  #feel the CHANGE

           (八)字符串对齐:

在使用Word处理文档时可能需要对文档的格式进行调整,如标题居中显示、左对齐、右对齐等。Python提供了center()(居中对齐)、ljust()(左对齐)、rjust()(右对齐)这3个方法来设置字符串的对齐方式。

           (九)字符串格式化输出:

字符串格式化输出是按照一种既定格式给字符串填空的方式,以便我们更加方便地写入字符串。

                         (1)%占位格式化字符串:
def print_intro(name, age, city):
  intro = '我叫%s,今年 %d 岁,来自%s。' % (name, age, city)
  print(intro)

print_intro('李华', 18, '重庆')
# 输出:我叫李华,今年 18 岁,来自南京。

上段代码中,% 运算符左边是要格式化的字符串,右边是一个元组。如果只有一个占位符,可以将元组里的元素拿出来。常用的占位符如下:

字符串常用占位符
格式符格式说明
%c将对应的数据格式化为字符
%s将对应的数据格式化为字符串
%d将对应的数据格式化为整数
%u将对应的数据格式化为无符号整型
%o将对应的数据格式化为无符号八进制数
%x将对应的数据格式化为无符号十六进制数
%f将对应的数据格式化为浮点数,可指定小数点后的精度(默认保留6位小数)

                          (2)format() 方法格式化字符串:

除了使用 % 运算符 进行字符串格式化输出,我们还可以使用字符串的 format() 方法达到同样的效果。format() 方法使用 {} 作为占位符,然后按照参数顺序替换对应的占位符。

'我叫{},今年 {} 岁,来自{}'.format('李华', 18, '重庆')
# 我叫李华,今年 18 岁,来自重庆

#还可以给占位符编号:
'我叫{0},今年 {1} 岁,来自{2}'.format('李华', 18, '重庆')
# 我叫李华,今年 18 岁,来自重庆

# 调整编号顺序
'我叫{2},今年 {1} 岁,来自{0}'.format('重庆', 18, '李华')
# 我叫李华,今年 18 岁,来自重庆

# 重复编号
'我叫{0},{0}今年 {1} 岁,来自{2}'.format('李华', 18, '重庆')
# 我叫李华,李华今年 18 岁,来自重庆

#还可以给占位符命名:
'我叫{name},今年 {age} 岁,来自{city}'.format(name = '李华', age = 18, city = '重庆')
# 我叫李华,今年 18 岁,来自重庆

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/675270.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号