05.Python开发基础(数据类型之字符)


一、字符串的特性

01:用引号引起来的内容就是字符串类型,但引号无法取消其特殊字符的含义;
02:若想取消引号内特殊字符的含义,需要在引号前面加字母r;
03:字符串中的每个字符都有对应的下标;
04:字符串是不可变的,每一次修改都是进行重新赋值;
05:字符串是可以进行切片的;
06:字符串是有序的(你定好了位置就不会变,除非你做了其它操作);

二、字符类型示例

## 直接用type查看其值的类型是不是字符串类型(值有加引号哈)
>>> type("1")

>>>
>>> type("chenliang")


## 将值赋值给变量,我们就可以直接查看变量所对应值的类型(值有加引号哈)
>>> name1 = "chenliang"
>>> type(name1)

>>>
>>> name2 = "lili"
>>> type(name2)

三、取消字符串中的特殊字符

>>> print("chenliang\n")   # \n表示换行,可以看到"chenliang"下有一空行;
chenliang

>>>
>>> print(r"chenliang\n")  # 加上字母r,可以看出没有空行了;
chenliang\n
>>>

四、字符串是不可变的

每一次修改都是进行重新赋值

>>> name = "chenliang"     # 将chenliang赋值给name变量
>>> name                   # 查看name变量所对应的值
'chenliang'
>>>
>>> name = "lili"          # 对name变量进行重新赋值为lili
>>> name                   # 查看name变量所对应的值
'lili

五、字符串是有下标的

>>> name = "陈亮"  # 定义name变量的值为陈亮
>>> print(name)    # 查看name变量的值
陈亮

>>> name[0]        # 显示name变量中下标为0的字符
'陈'
>>> name[1]        # 显示name变量中下标为1的字符
'亮'

>>> name[-1]       # 显示name变量中下标为-1的字符
'亮'
>>> name[-2]       # 显示name变量中下标为-2的字符
'陈'

六、字符串的常用操作总结

## 统计字符串中字符的长度

len("字符串")                      # 利用len()函数统计字符串的长度
"字符串".count("字符",从哪个下标开始)  # 统计字符串中某个字符有多少个

## 让字符串达到某个长度

"字符串".center(长度,"代替长度的字符") # 让字符串达到指定长度,含字符串长度,在字符串两边进行补长;
"字符串".rjust(长度,"代替长度的字符")  # 让字符串达到指定长度,含字符串长度,在字符串左边进行补长;
"字符串".ljust(长度,"代替长度的字符")  # 让字符串达到指定长度,含字符串长度,在字符串右边进行补长;

## 转换字符串中的大小字母

"字符串".capitalize()              # 字符串中的首字母大写;
"字符串".casefold()                # 把字符串中所有的大写字母变成小写;
"字符串".lower()                   # 把字符串中所有的大写字母变成小写; 
"字符串".swapcase()                # 将字符串中的大小写互相转化;
"字符串".upper()                   # 将所有字母转换成大写;

## 判断字符串中是否符合规则

"字符串".endswith("字符")           # 判断字符串以某个字符结尾,返回True或False
"字符串".startswith("字符")         # 判断字符串以某个字符开始,返回True或False
"字符串".islower()                 # 判断字符串是否全是小写字母,返回True或False
"字符串".isupper()                 # 判断字符串是否全是大写字母,返回True或False
"字符串".isdigit()                 # 判断字符串是否全是整数,返回True或False
"字符串".isspace()                 # 判断字符串是否是空格(只是空格哈),返回True或False

## 替换or去掉字符串中的某些字符

"字符串".strip()                          # 去掉字符串两边的特殊字符
"字符串".rstrip()                         # 去掉字符串右边的特殊字符
"字符串".lstrip()                         # 去掉字符串左边的特殊字符
"字符串".replace("替换字符","替换成什么字符")  # 替换字符串中的一个或多个字符

## 字符串的格式化

"字符串".split("分隔符")                   # 将字符串转换成列表,分隔符默认是空格
"字符串".rsplit("分隔符")                  # 将字符串转换成列表,分隔符默认是空格
"分隔符".join(列表)                        # 将列表中的元素拼接成字符串
"my name is {0},i like {1}".format("0对应的值","1对应的值")
"my name is {name},i like {course}".format(name="对应的值",course="对应的值")

七、字符串的常用操作示例

PS:这些常用操作都是没有真的更改字符串哈,只是通过这些方式处理后,让程序进行判断

 ## 统计字符串中字符的长度

# 利用len()函数统计字符串的长度,格式:len("字符串")
>>> len("chenliang")
9
>>> len("chenliang01")
11

# 统计字符串中某个字符有多少个,格式:"字符串".count("字符",开始下标)  
>>> "chenliang".count("n")
2
>>> "chenliang".count("n",4)
1

 ## 让字符串达到某个长度

# "字符串".center(长度,"用什么来代替长度")
>>> "chenliang".center(21,"-")
'------chenliang------'

# "字符串".rjust(长度,"用什么来替代长度") 
>>> "chenliang".rjust(21,"-")
'------------chenliang'

# "字符串".ljust(长度,"用什么来替代长度")  
>>> "chenliang".ljust(21,"-")
'chenliang---

 ## 转换字符串中的大小字母

# 字符串中的首字母大写,其它字母全部小写,格式:"字符串".capitalize() 
>>> "cHenLiang".capitalize()
'Chenliang'
>>>
>>> "1cHenLiang".capitalize()
'1chenliang'

# 把字符串中所有的大写字母变成小写,格式:"字符串".casefold()
>>> "ChenLiang".casefold()
'chenliang'

# 把字符串中所有的大写字母变成小写,格式:"字符串".lower()
>>> "ChenLiang".lower()
'chenliang'

# 将字符串中的大小写互相转化,格式:"字符串".swapcase()
>>> "ChenLiang".swapcase()
'cHENlIANG'

# 将所有字母转换成大写,格式:"字符串".upper()
>>> "y".upper()
'Y'

## 判断字符串中是否符合规则

# 判断字符串以某个字符结尾,返回True或False,格式:"字符串".endswith("字符")
>>> "chenliang".endswith("g")
True
>>> "chenliang".endswith("c")
False

# 判断字符串以某个字符开始,返回True或False,格式:"字符串".startswith("字符")
>>> "chenliang".startswith("c")
True
>>> "chenliang".startswith("g")
False

# 判断字符串是否全是小写字母,返回True或False,格式:"字符串".islower()
>>> "chenliang".islower()
True
>>> "Chenliang".islower()
False

# 判断字符串是否全是大写字母,返回True或False,格式:"字符串".isupper()
>>> "chenliang".isupper()
False
>>> "ChenLiang".isupper()
False
>>> "CHENLIANG".isupper()
True

# 判断字符串是否全是整数,返回True或False,格式:"字符串".isdigit()
>>> "1".isdigit()
True
>>> "0".isdigit()
True
>>> "-1".isdigit()
False
>>> "2chenliang".isdigit()
False

# 判断字符串是否是空格(只是空格哈),返回True或False,格式:"字符串".isspace()
>>> "".isspace()
False
>>> " ".isspace()
True
>>> " c".isspace()
False

## 替换or去掉字符串中的某些字符

# 去掉字符串两边的特殊字符,格式:"字符串".strip()
>>> " chenliang ".strip()
'chenliang'
>>>
>>> " chenliang \n".strip()
'chenliang'

# 去掉字符串右边的特殊字符,格式:"字符串".rstrip()
>>> " chenliang ".rstrip()
' chenliang'
>>>
>>> " chenliang \n".rstrip()
' chenliang'

# 去掉字符串左边的特殊字符,格式:"字符串".lstrip()
>>> " chenliang ".lstrip()
'chenliang '
>>>
>>> "\nchenliang ".lstrip()
'chenliang '

# 替换字符串中的一个或多个字符,格式:"字符串".replace("替换字符","替换成什么字符")
>>> "chenliang".replace("chen","ren")
'renliang'

## 字符串的格式化

# 将字符串转换成列表,格式:"字符串".split("分隔符");分隔符默认是空格;
>>> "chenliang lili lanlan".split()
['chenliang', 'lili', 'lanlan']
>>>
>>> "chenliang lili lanlan".split(" ")
['chenliang', 'lili', 'lanlan']

# 将字符串转换成列表,格式:"字符串".rsplit("分隔符");分隔符默认是空格;
>>> "chenliang lili lanlan".rsplit()
['chenliang', 'lili', 'lanlan']
>>>
>>> "chenliang lili lanlan".rsplit(" ")
['chenliang', 'lili', 'lanlan']

# 将列表中的元素拼接成字符串,格式:"分隔符".join(列表)
>>> list = ["chenliang","lili","lanlan"]
>>> "-".join(list)
'chenliang-lili-lanlan'
>>>
>>> ":".join(list)
'chenliang:lili:lanlan'

# "my name is {0},i like {1}".format("0对应的值","1对应的值")
>>> "my name is {0},i like {1}".format("chenliang","python")
'my name is chenliang,i like python'
>>>

# "my name is {name},i like {course}".format(name="对应的值",course="对应的值")
>>> "my name is {name},i like {course}".format(name="chenliang",course="python")
'my name is chenliang,i like python'
>>>

 ## 字符串的切片操作

##################### 从字符串的左边开始 ################################################
##################### 要么取开头、要么取中间、要么从某个字符取到最后)###################
## 取字符串的前N个字符(取字符串的第1个字符到第5个字符)
>>> name = "ABCDEFGHabcdefg"
>>> name
'ABCDEFGHabcdefg'
>>>
>>> name[:5]
'ABCDE'
>>> 
>>> name[:5:]
'ABCDE'
>>> 
>>> name[:5:1]
'ABCDE'

## 取字符串中间的N个字符(取字符串的第2个字符到第5个字符)
>>> name
'ABCDEFGHabcdefg'
>>>
>>> name[1:5]
'BCDE'
>>>
>>> name[1:5:]
'BCDE'
>>>
>>> name[1:5:1]
'BCDE'

## 从字符串中间某个字符取到最后(从字符串中的第4个字符取到最后)
>>> name
'ABCDEFGHabcdefg'
>>>
>>> name[3:]
'DEFGHabcdefg'
>>>
>>> name[3::]
'DEFGHabcdefg'
>>>
>>> name[3::1]
'DEFGHabcdefg'

##################### 从字符串的左边开始(排除右边的字符)##############################
## 取字符串中除了最后N个字符外的所有字符(排除字符串右边8个字符)
>>> name
'ABCDEFGHabcdefg'
>>>
>>> name[:-8]
'ABCDEFG'
>>> name[:-8:]
'ABCDEFG'
>>>
>>> name[:-8:1]
'ABCDEFG'

##################### 从某个字符跨步N个字符开始取#######################################
## 从第1个字符开始,每跨2个字符开始取
>>> name
'ABCDEFGHabcdefg'
>>>
>>> name[::2]
'ACEGaceg'

## 从第2个字符开始,每跨2个字符开始取
>>> name
'ABCDEFGHabcdefg'
>>>
>>> name[1::2]
'BDFHbdf'

##################### 反转字符串 ########################################################
## 反转字符串(前队变后队)
>>> name
'ABCDEFGHabcdefg'
>>>
>>> name[-1::-1]
'gfedcbaHGFEDCBA'

## 反转字符串(前队变后队,每隔2个字符去除)
>>> name
'ABCDEFGHabcdefg'
>>>
>>> name[-1::-2]
'gecaGECA'