python数据类型-字符串
基本数据类型
python的基本数据类型如下:
1. int ==> 整数. 主要用来进行数学运算
2. str ==> 字符串, 可以保存少量数据并进行相应的操作
3. bool==>判断真假, True, False
4. list==> 存储大量数据.用[ ]表示
5. tuple=> 元组, 不可以发生改变 用( )表示
6. dict==> 字典, 保存键值对, 一样可以保存大量数据
7. set==> 集合, 保存大量数据. 不可以重复. 其实就是不保存value的dict
二. 整数(int)
在python3中所有的整数都是int类型. 但在python2中如果数据量比较大. 会使用long类型. 在python3中不存在long类型
整数可以进行的操作:
bit_length(). 计算整数在内存中占用的二进制码的长度
a = 5 b = type(a) s = a.bit_length() print(s)
三. 布尔值(bool)
取值只有True, False. bool值没有操作.
关于不同的类型之前的转换问题,
str ----> int
int(str)
int ----> str
str(int)
bool ----> str
str(bool)
bool ---> int
int(True) 这个值为1
int(False) 这个值为0
str(bool)
str -----> bool
bool(str) 这里注意只有空字符是False 其他字符是True 举例"" 这种就是false ,或者s = None 这个也为false
另外关于这里空为false的问题,不止字符串,空元组,空列表都是false
如bool([]) ------> False
特点: 空:False .非空:True
int -----> bool
bool(int) 这里注意的是0是False,其他值为True
(True 和1的效率问题: 1的效率高.)
示例:
while 1: print("哈哈")
经典例题:
循环输入用户名,当用户输入enter键时,跳出程序.
while True: name = input("请输入用户的名字:") if not name: break else: print(name)
四. 字符串
索引 (字符串可以根据索引来取字符串里面的值)
示例:
s = "abcdefghijk" print(s[0]) print(s[5]) print(s[-1]) #倒数第一个 print(s[-5]) #倒数第五个
这里要注意的是:
正向是从0开始,反向是从-1开始
切片 (通过下标的索引来截取字符串的部分内容)
示例:
# s = "我想吃切糕.切糕没有芝麻好吃!" # print(s[2:4]) ## 切片. 顾头不顾腚. 前面的能取到. 后面的取不到 # print(s[4:1]) ## 顺序是从左往右切 # print(s[5:6]) # 把.给切出来 # print(s[:6]) #从头开始切 # print(s[6:]) #切到末尾 # print(s[:]) #切取全部 # print(s[6:99])#如果右边的数大于字符长度,那么切出右边全部. # print(s[-5:])#可以倒数,然后到最后
切片也可以设置步长,跳着切.
示例如下;
s = "abcdef,ghijklmn" print(s[1:4:2]) #按步长来切 print(s[-8:-1:2]) #也可以倒着切的 print(s[-1:-5:-1]) #反着取字符 print(s[8:1:-1]) #反着切数据 print(s[8:1:-2]) #按步长反着切
一些常用函数
s.capitalize() 单词首字符大写,不支持中文.如果第一个单词里面有非首字母大写,那么这个大写会被改成小写.也就是单词只能首字母大写.
s = "aleX and wusir gaoji" print(s.capitalize()) #第一个单词字母大写,如果第一个单词非第一个字符大写,那么这个会改为小写的.另外,这个只支持英文,不支持中文.
s.title() 每个单词的首字母大写,而区分每个单词方式是通过特殊字符或者空格.这里中文也算特殊字符的
s = "aleX_and wusir gaoji" print(s.title()) #title是每个单词都是首字母大写.而区分单词是通过空格,或者特殊字符来区分的.
upper() 所有字母大写
lower()所有字母小写
name = "taiBai" print(name.upper()) # 把每个字母都变成大写 print(name.lower()) # 把每个字母都变成小写 #验证码示例 code = "Fattr" re_code = input("请输入您的验证码") if code.upper() == re_code.upper(): print("您输入的验证码是对的!") else: print("您输入的验证码是错误的")
swapcase() 大小变小写,小写变大写.
示例如下:
s = "alexAndEggonAndRiTian" print(s.swapcase())
center(num,"")把字符拉长到num这个长度,然后把字符置中
示例:
s = "alex" print(s.center(10,"*")) #如果num是奇数的话,那边先填充左边, print(s.center(15,"*"))
expandtabs()这个函数主要是把tab占位转为空格占位
示例
s = "al\twusir" print(s) print(s.expandtabs())
strip()去除两边的空格
lstriip()去除左边的空格
rstrip()去除右边的空格
strip("s")去除两边的s字符,
示例如下:
s = " leon elon. roy, gary" print(s.strip()) #去除两边的空格 print(s.lstrip()) #去除左边的空格 print(s.rstrip()) #去除右边的空格 print(s.strip("gary"))
replace("","")把第一个字符串替换成第二个字符串
示例:
s = "alex,wusir,taibai,eggon" print(s.replace(",","_"))
split() #字符串切割,
示例如下:
s = "leon_ron_ben_roy_alex" print(s.split("_"))
下面是一些特殊用法
示例:
s = "leonronbenroyalex" print(s.split("leonronbenroyalex")) #如果切的刀和字符串是一样的,那么最后会生成一个列表,里面有两个空元素 print(s.split("马云")) # 如果不存在这个字符的话,那么会列表返回这个字符串. print(s.split(""))#这种会报错
split()可以传入切的次数.用法是这样的split("字符",2)
示例:
s = "leonronbenroyalex"# print(s.split("leonronbenroyalex")) #如果切的刀和字符串是一样的,那么最后会生成一个列表,里面有两个空元素 print(s.split("马云")) # 如果不存在这个字符的话,那么会列表返回这个字符串. # print(s.split(""))#这种会报错 print(s.split("ro",1)) #后面的数字表示切几刀
split()切的刀如果是在开始或者结尾,那这生成的列表会产生空字符,这种如果是在前面切的,那么会在前面产生空元素.
在开头和结尾如果出现了你的刀. 一定会出现空字符串
示例
s = "leonronbenroyalex"# print(s.split("leonronbenroyalex")) #如果切的刀和字符串是一样的,那么最后会生成一个列表,里面有两个空元素 print(s.split("马云")) # 如果不存在这个字符的话,那么会列表返回这个字符串. # print(s.split(""))#这种会报错 print(s.split("ro",1)) #后面的数字表示切几刀 print(s.split("leo")) print(s.split("lex"))
格式化输出 #这里主要用format来生成
name = 133 name2 = 24 print("{}还帅,{}信吗?".format(name,name2)) #这是标准用法 print("{1}很帅,{0}信吗?".format(name,name2)) #这里可以指定顺序 print("{person}很帅,{person1}信吗?".format(person=name2,person1=name)) #这里可以传入变量,然后赋值的
cout("s")这个是计算字符串中s出现的次数
示例:
s = "alex wusir taibai 女神" print(s.count("al"))
find("s") 查找字符串中是否有s,如果有的话,返回这个字符的索引,没有的话,返回-1
示例:
s = "alex wusir taibai 女神" print(s.find("dd"))
index("s") #index是求s在字符串中的索引号是多少,如果没有的话报错
s = "alex wusir taibai 女神" print(s.index("tai"))
条件判断
startswith()和endswith()判断是字符串是否以括号中的内容开始的,如果是的.就是True如果不是False
s = "alex wusir taibai 女神" print(s.endswith("alex"))
isalnum()#判断是否是数字和字母
isdigit() #判断是否是数字
isalpha()#判断是否是字母
s = "sddd女神" print(s.isalnum())
判断字符串的长度
len() #这个注意,是系统内置函数,调用方法和print一样
s = "123"
len(s)
迭代
for w in s :
代码块
示例
#计算s这个字符串有多少个数字 s ="I am sylar, I'm 14 years old, I have 2 dogs!" count= 0 for w in s: if w.isdigit() : count += 1 print(count)
关于判断str是否是小数的示例代码 :
str = "-13.23" str = str.replace("-","") if str.startswith(".") or str.endswith(".") or not str.count(".") == 1: print("不是小数") elif str.count(".") == 1 : str = str.replace(".","") if str.isdigit(): print("str是小数") else: print("不是小数")