有序 | 无序 | ||
可变 | 不可变 | 可变 | 不可变 |
列表[] (list) | 元组() (tuple) | 字典{} (dict) | |
字符串 (str) | 集合{} (set) | ||
Range、zip、map、enumerate等 |
字符串可以说是python中最受欢迎的数据类型了。字符串在表示方面也更为灵活多变。(python不支持单字符类型,单字符也是作为一个字符串使用)
1、创建:python用引号来界定字符串,可以用单引号、双引号、三引号。(只要不是三引号,就只能在一行内表示)
当打印一些特殊字符串(包含反斜杠)时,我们不希望反斜杠被当成特殊字符,可以加两个反斜杠,或者使用原生字符串(在字符串前面加“r”)。
2、字符串的切片规则
整个字符串:str[:]
从n开始到末尾:str[n:]
从头开始到end-1(取前end个字符):str[:end]
从strat开始到end-1:str[start:end]
从start开始到end-1,以步长为step截取:str[start:end:step]
选择索引为index的字符:str[index]
python的字符串具有不可变性,创建之后不能在原基础上改变
3、字符串的其他操作:
①.字符串复制:*
>>>name="girl"
>>>name*5
'girlgirlgirlgirlgirl'
②.字符串合并 :+
>>>'100'+'-'+'8'+'6'
'100-86'
③.成员测试:in,not in
>>>'g'in 'girl'
True
>>>'o'in'girl'
False
④.字符串格式化运算符:s%
4、字符串常见方法
①str.center(width,filler)
参数:width为字符串的宽度,filler为填充字符(filler默认时空格,且必须是单个字符)
>>>str='goodday'
>>>str.center(10)
' goodday '
>>>str.center(10,'*')
'*goodday**'
>>>str.center(10,'*&')
Traceback (most recent call last):
File "D:\python3102\lib\code.py", line 90, in runcode
exec(code, self.locals)
File "<input>", line 1, in <module>
TypeError: The fill character must be exactly one character long
②str.count(sub,start=0,end=len(str)
参数:sub为要统计的字符,start为开始查找的位置,默认为0,end为字符串结束的位置,默认到字符串的末尾)
>>>str='goodgoodstudy'
>>>str.count('g')
2
>>>str.count('oo')
2
>>>str.count('g',1,8)
1
③str.startswith(obj,start,end)
参数:obj为要判断的对象,可以为字符串,也可以为元素,start和end参数表示查询的字符串范围,如果字符串中存在指定的obj对象,则返回True,否则返回False.
>>>str='hello python'
>>>print(str.startswith('pyt'))
False
>>>print(str.startswith("hello"))
True
>>>print(str.startswith('hel',2,10))
False
④index(obj,start.end)
参数:obj是要查找的字符串对象,start为开始的索引,end为结束的位置,如果不指定则检索整个字符串。返回字符串对象在字符串中开始的位置索引,否则抛出异常。
find方法和index方法功能一样,区别在于find方法找不到时返回-1.
in和not in 则只能返回bool值,而不能返回索引。
>>>str='hello python'
>>>str.index('he')
0
>>>str.index('ho')
9
>>>str.index('oh')
Traceback (most recent call last):
File "D:\python3102\lib\code.py", line 90, in runcode
exec(code, self.locals)
File "<input>", line 1, in <module>
ValueError: substring not found
⑤join(sequence)
参数:sequence为要连接的元素序列,返回生成的新的字符串
>>>str1='-'
>>>str2=''
>>>seq=('p','y','t','h','o','n')
>>>str1.join(seq)
'p-y-t-h-o-n'
>>>str2.join(seq)
'python'
⑥str.strip(sub)
参数:sub为指定的字符,如果sub不指定,则默认去除字符串两边的空格或者换行符
>>>str1="******hello***python****"
>>>str1.strip("*")
'hello***python'
⑦str.replace(old,new,[max])
参数:old是要替换的字符,new是新的字符,如果指定max则替换最多不超过max次。
>>>str1="goodgoodstudy"
>>>str1.replace("o","k")
'gkkdgkkdstudy'
>>>str1.replace("o","k",2)
'gkkdgoodstudy'
⑧str.upper()
返回新生成小写转成大写的字符串,相反的方法为lower()
>>>str1="goodgoodstudy"
>>>str1.upper()
'GOODGOODSTUDY'
>>>str2='GOODGOODSTUDY'
>>>str2.lower()
'goodgoodstudy'
5、python的字符编码
python3的字节类型和字符串类型分别为bytes和Unicode。
用encode()方法和decode方法实现编码和解码。