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前面的数字即4print(s3)
我爱PythonPython我爱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)
1234543254321

常用方法

全部变大写--- .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()

空格、\t 、\n都属于空白

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-eF0.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)
52

find ---查找字符串出现的索引

s = "哈嗝哈哈大家好,我在这里哈哈"s1 = s.find("哈哈") #找到第一个出现的索引print(s1)s2 = s.find("不") #,如果找不到会返回-1print(s2)s3 = s.find("哈哈",10) #切片找,这里是从索引为10到最后print(s3)
2-112

is系列

isalnum() 字符串由字母或数字组成

isalpha() 字符串只由字母组成

注意:

对于unicode string,isalnum()和isalpha()会根据字符串中的字符是否属于Unicode编码的LETTER区域来判断是否都由字母组成。所以得出的结果为True,不一定表示只有26个英文字母。
s = "Faye123"s1 = "哈哈哈"print(s.isalnum())print(s1.isalnum())
TrueTrue

isdigit() 字符串只由数字组成

isdecimal() 字符串只由十进制的数字组成

isnumeric() 这个方法很神奇,能识别罗马数字、中文数字

num = "12①一Ⅰ"print(num.isdigit())print(num.isdecimal())print(num.isnumeric())
FalseFalseTrue

isdecimal可以用于:

   if s1.isdecimal():       s1 = int(s1)   else:       print("输入错误!请输入一个整数!")

注意:这三种方法都只是判断数字,不能有负号,不能有小数点。

num = "20.19"print(num.isdigit())print(num.isdecimal())print(num.isnumeric())
FalseFalseFalse

那要是是小数或者是负号怎么判断,我写了一个函数,可能写得不够简单,请大家指教!

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) #一定要是连续的字符串在里面才是Trueprint("天上" not in s)
TrueFalseTrue

列表里是以引号为单位的

s = ["你好","Python"]print("Python" in s)print("Py" in s)
TrueFalse

len() ---计算字符串的长度

a = "哈hh哈哈 123,"print(len(a))
10

不管中文还是英语还是数字还是空格还是标点,都是1个长度

Python字符串

评论关闭