一、学习python数据类型 — 字符串
1、字符串
-
定义:字符串是一个有序的字符的集合,用于存储和表示基本的文本信息,’ ‘(单引号)或’’ ‘’(双引号)或’’’ ‘’’(三引号)中间包含的内容称之为字符串
-
字符串的特点:
- 按照从左到右的顺序定义字符集合,下标从0开始顺序访问,有序;
- 可以进行切片操作;
- 不可变,字符串是不可变的,不能像列表一样修改其中某个元素,所有对字符串的修改操作其实都是相当于生成了一份新数据。
补充:
1.字符串的单引号和双引号都无法取消特殊字符的含义,如果想让引号内所有字符均取消特殊意义,在引号前面加r,如name=r’l\thf
1.1、字符串的创建,可参考如下方式:
In [85]: string1 = 'hello world!!' # 单引号创建一个字符串
In [102]: school = "There is a school! " # 双引号创建一个字符串
In [103]: name = '''My name is fzai''' # 三引号创建字符串
In [86]: string1 # 查看这个字符串的内容
Out[86]: 'hello world!!'
In [104]: school
Out[104]: 'There is a school! '
In [105]: name
Out[105]: 'My name is fzai'
1.2、字符串的一些常用方法
1.2.1、python移除空白的方法,strip()、lstrip()、rstrip(),replace()方法也可以去除空格,示例如下:
1、使用strip() 方法去除字符串开头或者结尾的空格
In [90]: string
Out[90]: ' I am like traveling! '
In [92]: len(string)
Out[92]: 22
In [89]: string1 = string.strip() # 使用strip()去除
In [91]: string1
Out[91]: 'I am like traveling!'
In [93]: len(string1)
Out[93]: 20
2、 使用lstrip() 方法去除字符开头(左边)的空格
In [90]: string
Out[90]: ' I am like traveling! '
In [94]: string2 = string.lstrip() # 使用lstrip()去除
In [95]: string
Out[95]: ' I am like traveling! '
In [96]: string2
In [92]: len(string)
Out[92]: 22
Out[96]: 'I am like traveling! '
In [97]: len(string2)
Out[97]: 21
3、 使用rstrip() 方法去除字符结尾(右边)的空格
In [90]: string
Out[90]: ' I am like traveling! '
In [98]: string3 = string.rstrip()
In [99]: string3
Out[99]: ' I am like traveling!'
In [100]: len(string3)
Out[100]: 21
4、replace()方法,可以去除全部空格,示例如下:
In [90]: string
Out[90]: ' I am like traveling! '
In [92]: len(string)
Out[92]: 22
In [107]: string4 = string.replace(" ","")
In [108]: string4
Out[108]: 'Iamliketraveling!'
In [109]: len(string4)
Out[109]: 17
5、使用字符串的split() 与 join() 方法进行操作
In [118]: a = 'I am a gril'
In [119]: b = a.split() # 字符串按空格分割成列表
In [120]: b
Out[120]: ['I', 'am', 'a', 'gril']
In [121]: c = ''.join(b) # 使用一个空字符串合成列表内容生成新的字符串
In [122]: c
Out[122]: 'Iamagril'
1.2.2、python中字符串的切片、索引、index()方法,示例如下:
1、索引
In [118]: a = 'I am a gril'
In [133]: a[9]
Out[133]: 'i'
In [135]: a[0]
Out[135]: 'I'
In [136]: a[3]
Out[136]: 'm'
2、index()方法,主要用于寻找某一字串是否在一个长的字符串中,示例如下:
In [118]: a = 'I am a gril'
In [129]: a.index("m") # 寻找字符串"m"在字符串的那个下标
Out[129]: 3
In [137]: a.index("g",1,10) # 寻找字符串"g"在a字符串的那个下标
Out[137]: 7
In [138]: a.index("g",5) # 寻找字符串"g"在a字符串的那个下标,从下标为5的位置往后找
Out[138]: 7
#### 测试一下取坐标的范围,是左闭右开 ####
In [145]: a[2] # 查看下标为2的字符串是"a",那么,尝试一下从下标2开始取值,可以取到
Out[145]: 'a'
In [146]: a.index("a",2)
Out[146]: 2
In [147]: a.index("a",1,2) # 寻找字符串'a',并从下标1开始取值,发现取不到,那就是左闭右开区间了
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-147-9b4220e2193a> in <module>
----> 1 a.index("a",1,2)
ValueError: substring not found
3、切片,和列表以及元组的切片是相同的,示例如下:
In [118]: a = 'I am a gril'
In [148]: a[1:2:3]
Out[148]: ' '
In [149]: a[2:7]
Out[149]: 'am a '
In [150]: a[1:9]
Out[150]: ' am a gr'
In [153]: a[1:10]
Out[153]: ' am a gri'
In [154]: a[1:20]
Out[154]: ' am a gril'
######## 带有步长的切片 ########
In [155]: a[-1:3:1]
Out[155]: ''
In [156]: a[2:-4:1]
Out[156]: 'am a '
In [157]: a[2:8:-2]
Out[157]: ''
In [158]: a[2:8:-1]
Out[158]: ''
1.2.3、python中字符串的center() 、count() 、find(),示例如下:
1、center()方法对一个字符串进行对齐。使用指定的字符进行对齐(默认为空白),示例如下:
语法
str.center(length, fillchar), 其中 :
length是字符串的长度[必需的]
fillchar是指定对齐的字符[可选]
In [164]: string = 'beatiful'
In [165]: print(string.center(20,"*"))
******beatiful******
In [166]: print(string.center(30,"#"))
###########beatiful###########
2、count( )方法会返回一个特定值在字符串中出现的次数,示例如下:
str.count(value, start, end), 其中 :
value是要在字符串中进行搜索的子字符串[必需的]。
start是在字符串中开始搜索指定值的起始索引[可选]
end是在字符串中结束搜索指定值的结束索引[可选]
In [169]: string = "beatuifulia"
In [171]: len(string)
Out[171]: 11
In [170]: print(string.count("a",1,10))
1
In [172]: print(string.count("a",0,11))
2
In [173]: print(string.count("i",0,11))
2
In [174]: print(string.count("i",5,11))
2
In [175]: print(string.count("i",10,11))
0
3、find() 方法会返回字符串中特定子字符串的最低索引。如果没有找到子字符串,则返回-1,示例如下:
语法
str.find(value, start, end), 其中 :
value 或 substring是要在字符串中搜索的值[必需的]
start是在字符串中搜索指定值的起始索引[可选]
end是在字符串中搜索指定值的结束索引[可选]
类型
rfind() : rfind() 方法类似于find(),只不过它返回的是子字符串的最高索引
In [177]: string
Out[177]: 'beatuifulia'
In [178]: print(string.find("a",1,10))
2
In [179]: print(string.find("a",2,8))
2
In [180]: print(string.find("u",2,8))
4
########### 以下是使用rfind的情况 ###########
## 可以看出rfind就是找出最高索引
In [182]: print(string.rfind("u"))
7
In [183]: print(string.rfind("a"))
10
1.2.4、python中字符串的startswith( ) 、 endswith( )、split( ),示例如下:
1、startswith( )方法是以指定的值开始,示例如下:
备注:
- 如果字符串以指定的值开始,则startswith()方法会返回True;否则,返回False
- 语法
string.startswith(value, start, end)
Value是要在字符串中查找的子字符串[必需的]
start是在字符串中开始搜索指定值的起始索引[可选]
end是在字符串中搜索指定值的结束索引[可选]
In [184]: string
Out[184]: 'beatuifulia'
In [185]: print(string.startswith("j"))
False
In [186]: print(string.startswith("b"))
True
2、endswith( )方法是以指定的值开始,示例如下:
备注:
- 如果字符串以指定的值结束,则endswith()方法会返回True;否则,返回False
- 语法
string.endswith(value, start, end)
Value是要在字符串中查找的子字符串[必需的]
start是在字符串中开始搜索指定值的起始索引[可选]
end是在字符串中搜索指定值的结束索引[可选]
In [184]: string
Out[184]: 'beatuifulia'
In [187]: print(string.endswith("k"))
False
In [188]: print(string.endswith("a"))
True
3、split()方法会返回一个字符串中单词的列表 ,其中默认的分隔符是任意数量的空格。
- 语法
string.split(sep, maxsplit)
sep:用于分割字符串的分隔符。如果没有指定任何内容,默认分隔符是空白[可选]
maxsplit:表示分割的数量。默认值为-1,表示“所有出现的单词”[可选]
In [194]: string
Out[194]: 'beatuifulia'
In [189]: print(string.split("#",3))
['beatuifulia']
In [190]: print(string.split("a"))
['be', 'tuifuli', '']
In [191]: print(string.split("i"))
['beatu', 'ful', 'a']
In [192]: print(string.split("i",3))
['beatu', 'ful', 'a']
In [193]: print(string.split("i",4))
['beatu', 'ful', 'a']
1.2.5、python中字符串的大小写转换,upper( ) 、 lower()、capitalize( )、title( )、swapcase(),示例如下:
1、upper( ) 方法将字符串中的小写字母转为大写字母,示例如下:
- 语法
str.upper() - 返回值
返回小写字母转为大写字母的字符串
In [202]: string
Out[202]: 'beatuifulia'
In [203]: print(string.upper())
BEATUIFULIA
In [204]: string.upper()
Out[204]: 'BEATUIFULIA'
2、 lower() 方法转换字符串中所有大写字符为小写,示例如下:
- 语法
str.lower() - 返回值
返回将字符串中所有大写字符转换为小写后生成的字符串
In [206]: string1 = "I AM A BOY !"
In [207]: string1.lower()
Out[207]: 'i am a boy !'
3、capitalize( ) 将字符串的第一个字母变成大写,其他字母变小写,示例如下:
- 语法
str.capitalize() - 返回值
该方法返回一个首字母大写的字符串
In [208]: string
Out[208]: 'beatuifulia'
In [209]: string.capitalize()
Out[209]: 'Beatuifulia'
4、title( ) 方法返回"标题化"的字符串,就是说所有单词的首个字母转化为大写,其余字母均为小写(见 istitle()),示例如下:
- 语法
str.title(); - 返回值
返回"标题化"的字符串,就是说所有单词的首字母都转化为大写
In [212]: string2 = "I am a boy !"
In [213]: string2.title()
Out[213]: 'I Am A Boy !'
5、swapcase() 方法用于对字符串的大小写字母进行转换
- 语法
str.swapcase(); - 返回值
返回大小写字母转换后生成的新字符串
In [212]: string2 = "I am a boy !"
In [214]: string2.swapcase()
Out[214]: 'i AM A BOY !'