Hello NanFeng
字符串是什么?
字符串是由字符组成的序列,属于有序的容器类型以及不可变数据类型。我们把形如以下形式的数据称为字符串。
str1 = 'hello nanfeng'
str2 = "你好 南风"
str3 = """hello
nanfeng 你好
南风"""
可以看出,被符号
’ ’
" "
‘’’ ‘’’ 或 “”" “”"
包住的内容即为字符串。其中单双引号没有太大区别,当其中一者做为另一者的内容时,不会起创建字符串的作用。三引号可以让字符串实现跨行定义。
转义字符
python中同样存在一种这样特殊的字符——转义字符,以符号 \ 开头的组合字符,通常有特殊的含义,下面列出一些常用的转义字符
转义字符 | 含义 | 转义字符 | 含义 |
\t | 横向制表符(相当于一个tab) | \n | 换行 |
\r | 回车 | \f | 换页 |
\b | 退格 | \a | 响铃 |
r标记
在字符串的引号前加上标记 r ,可以使字符串内转义字符的特殊含义失效,使用原本的含义即原样输出,同样,额外的符号 \ 也可以起到相同的作用,但需要直接加在转义字符之前,例如\\t。
字符串取值
之前有总结过,字符串属于容器类型中的序列类型,故存在索引,可以利用索引取值
1. 下标取值法
str1 = "happy new year"
print(str1[2])
## 输出
p
2. 切片取值法
str1 = "happy new year"
print(str1[0:4])
## 输出
hap
字符串的方法与属性
字符串拥有许多特殊的方法和属性,下面列出一些我收集到的常用的一些
1. 判断类
方法 | 功能 | 方法 | 功能 |
str.isdigit() | 是否只包含数字 | str.isnumeric() | 是否只包含数字(包括中文一到九等) |
str.isalnum() | 是否只包含字母或数字 | str.isalpha() | 是否只包含字母 |
str.istitle() | 是否每个单词首字母大写,其他字母小写 | str.isupper() | 是否全为大写 |
str.islower() | 是否全为小写 | str.isspace() | 是否只包含空格(tab也算空格) |
str.startswith(“str”, start,end) | 是否以某字符串开始(start与end可以指定搜索范围,默认可以不指定) | str.endswith(“str”, start,end) | 是否以某字符串结束 |
2. 转换类
方法 | 功能 | 方法 | 功能 |
str.upper() | 将字符串转换为大写 | str.lower() | 将字符串转换为小写 |
str.title() | 将字符串中的单词首字母大写,其他字母小写 | str.split(‘sep’) | 指定分隔符sep来把字符串拆成没有sep的一个个列表(sep默认空格) |
‘str’.join(list) | 将列表内的元素用’str’拼接成一个字符串 | str.strip([string]) | 去除字符串中首尾的字符串,不带参数默认去除空格 |
3. 统计类
方法 | 功能 |
len(string) | 统计字符串的长度 |
str.count(‘str’ ,start ,end) | 统计字符串’str’在字符中出现的次数 |
str.index(‘str’ ,start ,end) | 统计字符串’str’在字符串中第一次出现的下标位置(注意没有会报错) |
str.find(‘str’ ,start ,end) | 查找’str’,并返回它在字符串中第一次出现的下标位置(没有返回-1) |
字符串的拼接与重复
之前在总结容器类型的这篇文章Python学习日记:数据结构——容器类型中已经总结过了这一点,就不再赘述
特别的,如果字符串如此定义:
str1 = “蜜雪冰城” “甜蜜蜜”
即把两个字符串连着放着,python会自动把它们连接,这被称为级连字符串
字符串的格式化
format格式化
1.参数传递
name = "nanfeng"
age = 20
gender = 'male'
print("姓名:{},年龄:{},性别:{}".format(name, age, gender))
print("姓名:{0},{0},{0},年龄:{1},性别:{2}".format(name, age, gender))
print("姓名:{name1},年龄:{age1},性别:{gender1}".format(name1=name, age1=age, gender1=gender))
## 输出
姓名:nanfeng,年龄:20,性别:male
姓名:nanfeng,nanfeng,nanfeng,年龄:20,性别:male
姓名:nanfeng,年龄:20,性别:male
字符串中的字符串参数可以使用 {变量} 传入,上面展示的是三种传入参数的格式。
第一种是空花括号{} 按照顺序在后面的format里找参数
第二种是添加序列,仍然是0开始,按照序列在后面的format找参数
第三种是预先定义一个关键字,然后在后面的format中再做声明,声明先前定义的关键字该传哪个值。个人觉得这个挺多此一举的,可能是适用于代码、变量很多的情况下类似于注释一下,方便读代码吧。
2.填充输出
花括号里还可以指定许多参数来实现特殊的输出效果
语法: ‘{参数下标:[填充字符][对齐方式 <^>][标记][宽度][.数字][类型]}’.fomat(参数1,参数2…)
含义解释
[]里的是可选参数
1.填充字符
是用来指定填充的字符的,特别的,当填充字符为逗号 , 且参数为则行数或者浮点数时,会输出千分位格式的数字,例如:1,000,000
2.对齐方式
< 左对齐
> 右对齐
^ 居中对齐 (如果使用居中对齐那么宽度就必须指定)
3.标记
+ 正数前加正号,负数前加负号
- 正数前不加正号,负数前加负号
空格 正数前加空格,负数前加负号
# 显示二进制数、八进制数和十六进制数的前缀,分别是 0b、0o、0x,反之则不显示前缀。
4.宽度
指定输出时占用的宽度
5.数字
. 后面所接的数字是设定保留小数点后几位
6.类型
类型用来指定输出的数据类型,下面是一些常用的
f 浮点数
d 转换为十进制数再格式化输出
b 转换为二进制数再格式化输出
o 转换为八进制数再格式化输出
x或X 转换为十六进制数再格式化输出
% 显示百分比(默认是小数点后六位)
e或E 转换为科学计数法后,再格式化输出
由于参数众多,我就不一一举实例示范了,感兴趣的伙伴可以自己打开python3的环境试试
f格式化
f格式化所指的仍然是format,不过f格式化使用的形式和功能还是与format格式化有区别
语法: f"…{变量1}…{变量2}…{变量3}…"
含义解释
f 是f格式化的标记,要记住是在引号的外面
… 指代任意字符串内容
{变量} 花括号里的变量名是需要先前已经定义过的变量
示例:
goods = "芒果圣代"
print(f"你好,我要点一杯{goods}")
## 输出
你好,我要点一杯芒果圣代
f格式化是我最喜欢用的格式化输出方法,虽然功能没有format那么多,但是真的很简洁!
好的字符串就总结到这里了,有其他没涉及到的点也希望大家在评论区多多补充~