『Python基础』字符串

Python字符串

字符串概述

1、什么是字符串?

字符串是 Python 中最常见的数据类型。
字符串就是一段字符信息,用于传送/表述数据。
类似生活中说的话,书本上的文本等等…

2、字符串的声明?

Python 中通过单引号、双引号、三对引号的方式声明字符串
三对引号 通常包含一个长字符串,python中一般用来当成文档注释使用,放在文件的第一行位置、函数的第一行位置。
单引号和双引号包含的字符串,常规Python开发人员声明普通字符时一般会使用单引号;单引号和双引号的使用满足项目规范即可。

"""
文档注释
	放在Python文件的开头位置
	用在说明Python文件的作用、作者、版本、描述、时间等信息...
"""
name = "zhang san"
names = 'zhang san and li si'

3、字符串的操作方式?

字符串的操作查询

dir(str)
['capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 
'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit',
'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 
'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex',
'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 
'swapcase', 'title', 'translate', 'upper', 'zfill']
  • 字符串变形
    • 大小写转换
  • 字符串格式化
    • 字符串占用多少长度,左对齐/右对齐
  • 字符串查询
    • 字符串中某个字符的位置
    • 字符串以什么字符开头
    • 字符串以什么字符结尾
  • 字符串判断
    • 是否包含的全是数字
    • 是否包含的全是字母
    • 是否包含的数字和字母的组合

为什么要使用字符串?

项目是和用户交互的界面,界面上主要以信息表达和接收为主,用户之间的交互主要形式是字符串的信息交互,所以项目中使用字符串。

什么地方要用到字符串?

需要通过字符信息描述的数据,都通过字符串来表述

字符串的操作

1、字符串声明

// 通过变量赋值的方式,一个引号包含的字符串,赋值给一个变量,初始化一个字符串
name = 'tom'
friend = "jerry"

2、不可变类型

字符串由于在项目中经常使用,所以编程语言对于字符串进行了优化,将字符串定义为不可变类型,所谓不可变类型就是一旦声明初始化,这个字符串常驻内存

name = "jerry"
name = "tom"
print(name)
# tom
name = "tom"
names = name

name += "and jerry"
print(name)
# tom and jerry

print(names)
# tom

字符串为什么是不可变类型?
1、python中针对项目中最常见的字符串进行了优化,将字符串的声明和操作定义为不可变类型,这样在项目中随时使用任意字符串都能从内存中直接获取对应的字符串数据,方便了字符串对象的创建优化。
2、内存中字符串一旦创建,该对象就会常驻内存,并且不允许修改,当其他变量需要这个字符串时会直接赋值,省略了申请空间创建对象的步骤,所以处理效率得到了提升。

3、字符串索引

字符串包含一个隐式的索引编号,如:

a = "helloworld"
a[1] # e
# 索引编号,从左到右,从0开始,直到len(a) -1

字符串可以类似列表一样,切片。

# 顺序切片
# 基本语法:[begin:end:step]
a = "小王吃煎饼"
print(a[1:3])
# 王吃煎
print(a[::-1])
# 饼煎吃王小
print(a[3::-1])
# 煎吃王小
print(a[100:105])
# 切片的时候起始位置和终止位置都超出的时候不会进行报错

print(a[100])
# 索引的时候引值超出范围的时候会报错

身份证号号码,计算用户年龄和性别?

# 获取:当前年份、获取用户身份证号码
# 和系统日期有关:datetime
from datetime import datetime
today = datetime.today()
year = today.year
# 和用户身份证有关:input()用户输入

4、字符串编码

编码:encode(),字符转换成字节,方便数据的传输
解码:decode(),将字节还原为字符,方便数据的展示

s = "你好"

b = s.encode("UTF-8")	# 编码
type(b)
<class 'bytes'>

s2 = b.decode("UTF-8")	# 解码
print(s2)
你好

5、转义字符

字符串的意义转换:转义字符:\
转义字符:将一个原有字母,转换一种特殊的功能出现在字符串中
\n 换行
\r 回车
\t tab
\\ 普通字符\

6、元字符串

python中为了让字符串能出现更多的功能,提供了一种在字符串声明的时候赋予特定含义的描述符

# 普通字符串
s = "你好\n今天天气不错"

# 1. 原格式字符串:字符串中出现的任意特殊符号,均按照原有的意义输出
s = r"你好\n今天天气不错"

# 2. 字节字符串:创建一个字符串,类型直接是字节类型 bytes
s = b'hello world'

# 3. 标准字符串:创建一个字符串,按照unicode编码
s = u"你好"

# 4. 格式化字符串
info = "格式化"
s = f"你好,这是一个字符串,但是可以包含并解释变量数据:{info}"

7、字符串占位符

项目中经常遇到字符串和其他数据的混合输出,其他类型的数据在python中不可以和字符串直接拼接
1.字符串拼接字符串

name = "tom"
info = "tom and jerry"
result = name + info # 直接拼接

result2 = name * 20	 # 重复拼接

2.字符串拼接其他类型

name = "tom"
age = 18
result = name + age
# TypeError 这样的拼接方式是不允许的,类型不一致
# 问题:怎么才能让字符串和其他类型进行有效的拼接?

3.字符串占位符
s = “my name is %s” % “tom”

​ 占位符:使用后面指定的数据,替换前面占位符位置的数据

%s 用于占位一个字符串位置 s = “我今年%s岁了” % 20

%d 用于占位一个十进制数据的位置dec s = “我今年%d岁了” % 20

%f 用于占位一个浮点数数据的位置float s = “圆周率:%f” % 3.1415926

4.字符串标准替换格式:format()

# 变量替换:推荐,代码可读性较高
s = "我叫{name},今年{age}了,我的朋友是:{friend},我的昵称是:{name}".format(name="tom", age=18, friend="jerry")
# '我叫tom,今年18了,我的朋友是jerry,我的昵称是tom

8、字符串函数

字符串的操作函数

dir(str)
'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 
'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum',
'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower',
'isnumeric','isprintable', 'isspace', 'istitle', 'isupper', 'join'
'ljust', 'lower','lstrip', 'maketrans', 'partition', 'replace', 
'rfind', 'rindex','rjust', 'rpartition', 'rsplit', 'rstrip', 'split',
'splitlines','startswith', 'strip', 'swapcase', 'title', 'translate',
 'upper','zfill'

查找

find 查找,返回从左第一个指定字符的索引,找不到返回-1
rfind 查找,返回从右第一个指定字符的索引,找不到返回-1
index 查找,返回从左第一个指定字符的索引,找不到报错
rindex 查找,返回从右第一个指定字符的索引,找不到报错
count 计数功能,返回自定字符在字符串当中的个数

拆分

partition 把mystr以str分割成三部分,str前,str自身和str后
splitlines 按照行分隔,返回一个包含各行作为元素的列表,按照换行符分割
split 按照指定的内容进行分割
maxsplit 默认指定的所有的内容进行分割,可以指定maxsplit的值,如果maxsplit = 1 表示只按照第一个指定内容进行分割,后面剩余的不分割。

替换

replace 从左到右替换指定的元素,可以指定替换的个数,默认全部替换
translate 按照对应关系来替换内容 from string import maketrans

修饰

zfill 将字符串填充到指定的长度,不足地方用0从左开始补充
format 按照顺序,将后面的参数传递给前面的大括号
strip 默认去除两边的空格,去除内容可以指定
rstrip 默认去除右边的空格,去除内容可以指定
lstrip 默认去除左边的空格,去除内容可以指定

变形

upper 将字符串当中所有的字母转为大写
lower 将字符串当中所有的字母转为小写
swapcase 将字符串当中所有的字母大小写互换
title 将字符串当中的单词首字母大写,单词以非字母划分
capitalize 只有字符串的首字母大写
expandtabs 把字符串中的tab符号(’\t’)转为空格,tab符号(’\t’)默认的空格数是8

判断

isalnum 判断字符串是否完全由字母或数字组成
isalpha 判断字符串是否完全由字母组成
isdigit 判断字符串是否完成由数字组成
isupper 判断字符串当中的字母是否完全是大写
islower 判断字符串当中的字母是否完全是小写
istitle 判断字符串是否满足title格式
isspace 判断字符串是否完全由空格组成
startswith 判断字符串的开头字符,也可以截取判断
endswith 判断字符串的结尾字符,也可以截取判断
split 判断字符串的分隔符切片

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值