Python字符串
Posted faye9898
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python字符串相关的知识,希望对你有一定的参考价值。
字符串:
数据类型的分类
可变(不可哈希)的:list dict set
不可变(可哈希)的:str bool int tuple
切片
基本结构:
? str[start : end : step]
? step步长默认为1
? start或者end不写的话默认为第一个值与最后一个值
s = "我爱Python" s1 = s[:] print(s1) #这是切片整个字符串,相当于是copy了 s2 = s[2:] #只写了开头没有写结尾,所以是从索引为2的字符开始到最后 print(s2) s3 = s[:5] #这里只写了结尾没有写开头,所以是从第一个字符到索引为4的字符,注意:end这里是开区间,是取不到这个值的,只能取到5前面的数字即4 print(s3)
我爱Python Python 我爱Pyt
倒切:
易错点:python切片一定是从左往右走的,要让它从右往左走,step步长就要设置为负数
s = "987654321" s1 = s[-1:-5] #这里是打不出来东西的,因为python默认步长是1,只能从左往右走。 print(s1) s2 = s[-1:-5:-1] #要把步长设置为-1,才会倒着走!而且倒着只能走到索引为-4的字符这里 print(s2) s3 = s[-5:-1] #这里走不到最后,怎么办呢 print(s3) s4 = s[-5:] #直接用:表示最后 print(s4) s5 = s[::-1] #倒序打印全部 print(s5)
1234 5432 54321
常用方法
全部变大写--- .upper()
全部变小写--- .lower()
大小写转换--- .capitalize()
s = "Hello,I'm Faye!" s1 = s.upper() print(s1) print(s)
HELLO,I'M FAYE! Hello,I'm Faye!
不会对原字符串产生任何影响
P.S: 在做验证码的时候就可以用这个:
if your_code.upper() = code.upper()
以什么为开始--- .startswith()
以什么为结尾--- .endswith()
s = "欢迎来到Faye的博客" print(s.startswith())
.replace() ---替换
s = "今天你学习了吗?今天你更博学了吗?今天你瘦了吗?" s1 = s.replace("今天","昨天") s2 = s.replace("今天","昨天",2) #可以选择替换几个,这里是2表示只替换前面两个 print(s) print(s1) print(s2)
今天你学习了吗?今天你更博学了吗?今天你瘦了吗? 昨天你学习了吗?昨天你更博学了吗?昨天你瘦了吗? 昨天你学习了吗?昨天你更博学了吗?今天你瘦了吗?
去除首尾的空白--- .strip()
去除左边的空白--- .lstrip()
去除右边的空白--- .rstrip()
空格、 、 都属于空白
strip还能去掉首尾的指定字符,注意是首尾的!
s = "abc你好22abcPython520" s1 = s.strip("5aonb20") #strip里的字符顺序不重要 print(s1)
c你好22abcPyth
split ---默认按照空格分隔,返回一个列表
s = "我 喜欢 Python" s1 = s.split() print(s) print(s1)
我 喜欢 Python ['我', '喜欢', 'Python']
也可以指定字符串分隔
s = "我,一直,都,很喜欢,学习," #注意结尾有个“,” 分隔出来是空字符串 s1 = s.split(",") s2 = s.split(",",2) #2表示就分隔前两个 print(s1) print(s2)
['我', '一直', '都', '很喜欢', '学习', ''] ['我', '一直', '都,很喜欢,学习,']
join ---联合字符串?返回一个字符串
s = "Faye" s1 = "-".join(s) print(s1) s2 = "0.0" s3 = s2.join(s) print(s3)
F-a-y-e F0.0a0.0y0.0e
如果是列表,列表内容只能是字符串,不能是数字,不能是布尔型
s = ['haha','你好',"好久不见"] s1 = ",".join(s) print(s1,type(s1))
haha,你好,好久不见 <class 'str'>
如果是数字或者布尔型则会报错.
count ---数出字符串某个字符出现的次数
s = "今天天气不错,希望天天都能有这样的天气" s1 = s.count("天") s2 = s.count("天气") print(s1) print(s2)
5 2
find ---查找字符串出现的索引
s = "哈嗝哈哈大家好,我在这里哈哈" s1 = s.find("哈哈") #找到第一个出现的索引 print(s1) s2 = s.find("不") #,如果找不到会返回-1 print(s2) s3 = s.find("哈哈",10) #切片找,这里是从索引为10到最后 print(s3)
2 -1 12
is系列
isalnum() 字符串由字母或数字组成
isalpha() 字符串只由字母组成
注意:
- 对于unicode string,isalnum()和isalpha()会根据字符串中的字符是否属于Unicode编码的LETTER区域来判断是否都由字母组成。所以得出的结果为True,不一定表示只有26个英文字母。
s = "Faye123" s1 = "哈哈哈" print(s.isalnum()) print(s1.isalnum())
True True
isdigit() 字符串只由数字组成
isdecimal() 字符串只由十进制的数字组成
isnumeric() 这个方法很神奇,能识别罗马数字、中文数字
num = "12①一Ⅰ" print(num.isdigit()) print(num.isdecimal()) print(num.isnumeric())
False False True
isdecimal可以用于:
if s1.isdecimal(): s1 = int(s1) else: print("输入错误!请输入一个整数!")
注意:这三种方法都只是判断数字,不能有负号,不能有小数点。
num = "20.19" print(num.isdigit()) print(num.isdecimal()) print(num.isnumeric())
False False False
那要是是小数或者是负号怎么判断,我写了一个函数,可能写得不够简单,请大家指教!
def fun(a): flag = 1 a = str(a) if a[0] == "-": a = a.replace("-","0",1) flag = 0 if a.isdecimal(): if flag == 1: print("是正整数!") else: print("是负整数!") elif a.count(".") == 1 and not a.startswith(".") and not a.endswith("."): print("是小数") else: print("输入的不是数字!") fun(23.4) fun(-57.2) fun(-12) fun(2019)
是小数 是小数 是负整数! 是正整数!
in,not in
s = "好好学习,天天向上" print("天天" in s) print("天上" in s) #一定要是连续的字符串在里面才是True print("天上" not in s)
True False True
列表里是以引号为单位的
s = ["你好","Python"] print("Python" in s) print("Py" in s)
True False
len() ---计算字符串的长度
a = "哈hh哈哈 123," print(len(a))
10
不管中文还是英语还是数字还是空格还是标点,都是1个长度
以上是关于Python字符串的主要内容,如果未能解决你的问题,请参考以下文章