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那么多,但是真的很简洁!

好的字符串就总结到这里了,有其他没涉及到的点也希望大家在评论区多多补充~