一、基本数据类型
1、字符串 str
字符串方法介绍(二)
a --expandtabs( )
expandtabs( ) 把字符串中的 tab 符号(' ')转为空格
参数默认为8,注意字符串原有的空格也参与计算长度
test = "LinGou LinGengxin" v1 = test.expandtabs( ) #这里是根据字符串的长度计算,expandtabs( )默认为8,执行方式如下 #"LinGou LinGengxin" #LinGou是6个字符,此时遇到 ,expandtabs( )默认为8,要补全2个字符长度,即6+2=8, # 之后的字符不用处理 print(v1) v2 = test.expandtabs(6) #同样的这里也是这样执行,参数为6, # 字符串从左到右6个字符一组,LinGou是6个字符,忽略不作处理直接输出,此时遇到 , # 前面没有字符参与计算长度,此时需要 直接输出6个空格 # 之后的字符不用处理 print(v2) v3= test.expandtabs(7) #参数为7,LinGou是6个字符,此时需要补全1个空格即可 #注意这里的空格是expandtabs()输出的,不是自带的 print(v3) test2 = "LinGou wang wang" v4 =test2.expandtabs(7) #字符串原有的空格也参与计算长度 #参数为7,LinGou是6个字符,遇到第一个 ,此时需要补全1个空格即可 #继续计算,第一个 输出一个空格,之后有一个字符串自带的空格, #1个自带空格+wang(4个字符)+1个自带空格=6个长度,遇到 ,此时补全1个空格即可 #第二个 之后的字符不用处理 print(v4) test3 = "123456 789012345 67890" v5 =test3.expandtabs(6) #参数为6,计算字符长度,123456长度为6,直接输出不做处理, # 前面没有字符参与计算长度,此时需要 直接输出6个空格 #继续计算,789012,长度为6,直接输出不做处理, # 继续计算,345长度为3,遇到 ,此时需要补全3个空格 #第二个 之后的字符不用处理 print(v5)
输出结果
LinGou LinGengxin LinGou LinGengxin LinGou LinGengxin LinGou wang wang 123456 789012345 67890
举个例子
test = "name email passwd nicholas 123@qq.com 123 Pony 10001@qq.com 12345 Tony 10002@qq.com 12345" v6 = test.expandtabs(20) print(v6)
输出结果
name email passwd nicholas 123@qq.com 123 Pony 10001@qq.com 12345 Tony 10002@qq.com 12345
分析:这里的 是换行符,这里可以通过 、 制作一个类似表格的结果。
b--isalpha()
isalpha( )判断字符串是否只包含字母、汉字,如包含数字、下划线则输出False
test = "nicholas" v7 = test.isalpha() print(v7) test2 ="nicholas1" v8 = test2.isalpha() print(v8) test3 ="尼古拉斯" v9 = test3.isalpha() print(v9) test4 ="nicholas尼古拉斯" v10 = test4.isalpha() print(v10)
输出结果
True False True True
c--isdecimal()、isdigit()、isnumeric
isdecimal( )判断当前输入是否是数字
isdigit()判断当前输入是否是数字
test = "123" v11 = test.isdecimal() v12 = test.isdigit() v13 = test.isnumeric() print(v11, v12,v13) test1 = "②" # 对于这种特殊符号的2,有的函数支持,有的不支持,所以出现了两种结果 v14 = test1.isdecimal() v15 = test1.isdigit() v16 = test.isnumeric() print(v14, v15,v16) test2 = "IV" # 罗马数字,输入法特殊符号里输入,不能直接写英文字母I V v17 = test2.isdecimal() v18 = test2.isdigit() v19 = test.isnumeric() print(v17, v18,v19) test3 = "二" # 汉字 v20 = test2.isdecimal() v21 = test2.isdigit() v22 = test.isnumeric() print(v20, v21,v22)
输出结果
True True True False True True False False True False False True
分析:第三种罗马数字"IV",经测试,isdigit()、isdecimal()都输出False,有的博客写错了,写成isdigit()输出True,isdecimal()输出False。
digit:数字, decimal:十进制的,小数
numeric:数字的; 数值的
d--isidentifier()
判断字符串是否是合法的标识符,字符串仅包含中文字符合法,实际上这里类似判断变量名是否合法。
一般的变量命名以字母、数字、下划线,但数字不能开头,以上都会输出True
这里输出True的情况要加上仅包含中文字符,使用python内部函数名、标识符。
test = "123" test1="_123" test2="def" test3="中国" v23 = test.isidentifier() v24 = test1.isidentifier() v25 = test1.isidentifier() v26 = test1.isidentifier() print(v23,v24,v25,v26)
输出结果
False True True True
e--isprintable()
判断是否存在不可显示的字符
换行 制表符等在打印时无法显示出来
test = "123" test1 = "123 " test2 = "123 " v27 = test.isprintable() v28 = test1.isprintable() v29 = test2.isprintable() print(v27, v28,v29)
输出结果
True False False
f--isspace()
判断是否全部是空格,必须全部都是,空字符串也会输出False
下面的test3就是空字符串。
test = "123" test1 = "12 3" test2 = " " test3 ="" v30 = test.isspace() v31 = test1.isspace() v32 = test2.isspace() v33 = test3.isspace() print(v30, v31,v32,v33)
输出
False False True False
g--istitle()、title()
istitle()判断是否是标题,即英文语句每个单词的首字母都是大写的
title()将英文语句转换为标题类型,即将每个单词的首字母都转为大写的
test = "Return True if all cased characters in S are uppercase and there is" v1 = test.istitle() print(v1) v2 = test.title() print(v2) v3 = v2.istitle() print(v3)
输出结果
False Return True If All Cased Characters In S Are Uppercase And There Is True
h--join()
将字符串中的每一个元素按照指定分隔符进行拼接
test = "大王叫我来巡山" t1 = " " t2 = "*" v1 = t1.join(test) v2 = t2.join(test) print(v1) print(v2)
输出结果
大 王 叫 我 来 巡 山 大*王*叫*我*来*巡*山
i--center()、ljust()、rjust()
center( ) 设置宽度,并将字符串内容居中,其他地方根据参数进行填充,默认为空白
ljust()设置宽度,并将字符串内容放在左边,其他地方根据参数进行填充,默认为空白
rjust()设置宽度,并将字符串内容放在右边,其他地方根据参数进行填充,默认为空白
test = "nicholas" v1 = test.center(20,"*") v2 = test.ljust(20,"*") v3 = test.rjust(20,"*") print(v1) print(v2) print(v3)
输出结果
******nicholas****** nicholas************ ************nicholas
j--lower()、islower()、upper()、isupper()
lower()将英文字符转换为小写
islower()判断字符串是不是全部是小写
upper()将英文字符转换为大写
isupper()判断字符串是不是全部是大写
test = "Nicholas" v1 = test.lower() v2 = test.islower() v3 = test.upper() v4 = test.isupper() print(v1) print(v2) print(v3) print(v4)
输出结果
nicholas False NICHOLAS False
k--strip()、lstrip()、rstrip()
strip(),移除指定的字符串,默认可以移除空格、
、 ,也可以指定要移除的字符
lstrip()移除原字符串左边的指定的字符串,默认可以移除空格、
、 ,也可以指定要移除的字符
rstrip()移除原字符串右边的指定的字符串,默认可以移除空格、
、 ,也可以指定要移除的字符
test = " Nicholas " test2 = " Nicholas " test3 = "**Nicholas**" v1 = test.strip() v2 = test.lstrip() v3 = test.rstrip() v4 = test2.strip() v5 = test2.lstrip() v6 = test2.rstrip() v7 = test3.strip("*") v8 = test3.lstrip('*') v9 = test3.rstrip('*') print(v1) print(v2) print(v3) print(v4) print(v5) print(v6) print(v7) print(v8) print(v9)
输出结果
Nicholas Nicholas Nicholas Nicholas Nicholas Nicholas Nicholas Nicholas** **Nicholas
l--maketrans()、translate()
maketrans(),和translate()一起用
maketrans()做一种对应关系,translate()对其进行转换
str1 = "aeiou" str2 = "12345" test = "Nicholas" v1 = str.maketrans("aeiou","12345") #做一种对应关系 v2 = test.translate(v1) #进行转换,类似对明文密码进行加密 #根据对应关系,遇到i替换为3,遇到o替换为4,在没有对应关系的字符不变。 print(v2)
输出结果
N3ch4l1s
m--partition()、rpartition()、split()、rsplit()
partition()用来根据指定的分隔符将字符串进行分割。结果是分割为三部分,第一个为分隔符左边的子串,第二个为分隔符本身,第三个为分隔符右边的子串。
这个指定的字符是从左向右数的,如之后还有相同的字符也不再进行分割。
rpartition()功能与partition()相同,只是计算指定字符是从右向左数的。同样也是分为三部分,第一个为分隔符右边的子串,第二个为分隔符本身,第三个为分隔符左边边的子串。
同样的,之后还有相同的字符也不再进行分割。
split()指定分隔符对字符串进行切片,如果参数num 有指定值,则分隔 num个子字符串,但是指定的字符串不在出现在输出的结果中,这个是从左到右进行分割的
rsplit()与split()功能相同,只是这个是从右向左分割的。
str1 = "aeiouaeiou" v1 = str1.partition("i") v2 = str1.rpartition("i") v3 = str1.split("i") v4 = str1.rsplit("i") print(v1) print(v2) print(v3) print(v4)
输出结果
('ae', 'i', 'ouaeiou') ('aeiouae', 'i', 'ou') ['ae', 'ouae', 'ou'] ['ae', 'ouae', 'ou']
再举个例子
str1 = "aeiouaeiouijk" v1 = str1.split("i",2) v2 = str1.rsplit("i",2) print(v1) print(v2)
输出结果
['ae', 'ouae', 'ouijk'] ['aeiouae', 'ou', 'jk']
分析:这里加了参数2,进行了2次分割。
n--splitlines()
根据换行符
进行分隔,如果参数为False,不包含换行符,如果为True,则保留换行符。
str1 = "aeio uaeio uijk" v1 = str1.splitlines() v2 = str1.splitlines(False) v3 = str1.splitlines(True) print(v1) print(v2) print(v3)
输出结果
['aeio', 'uaeio', 'uijk'] ['aeio', 'uaeio', 'uijk'] ['aeio ', 'uaeio ', 'uijk']
o--swapcase()
用于对字符串的大小写字母进行转换。
大写字母转为小写,小写字母转为大写字母
str1 = "Nicholas" str2 = "NicHolAs" v1 = str1.swapcase() v2 = str2.swapcase() print(v1) print(v2)
输出结果
nICHOLAS nIChOLaS
p--replace()
字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。
str1 = "NicholasNicholasi" v1 = str1.replace("i","niubi") v2 = str1.replace("i","niubi",2) print(v1) print(v2)
输出结果
NniubicholasNniubicholasniubi NniubicholasNniubicholasi
字符串
count:(python中的count()函数,从字面上可以知道,他具有统计功能)
Python count() 方法用于统计字符串里某个字符出现的次数。可选参数为在字符串搜索的开始与结束位置。
语法
count()方法语法:
str.count(sub, start= 0,end=len(string))
参数
- sub -- 搜索的子字符串
- start -- 字符串开始搜索的位置。默认为第一个字符,第一个字符索引值为0。
- end -- 字符串中结束搜索的位置。字符中第一个字符的索引为 0。默认为字符串的最后一个位置。
返回值
该方法返回子字符串在字符串中出现的次数。
例子
1 strings="How do you do" 2 3 print(strings.count("o"))
其中7个重要的方法要熟练掌握
join()
split()
find()
strip()
upper()
lower()
replace()
二、字符串的其他知识
1、索引,下标
获取字符串中的某一个字符
字符串的索引,下标,下标是从0开始的
str1 = "nicholas"
n i c h o l a s
0 1 2 3 4 5 6 7
str1 = "Nicholas" v1 = str1[5] v2 = str1[0:3]#注意这里是冒号,不是逗号,这里是前闭后开区间,即[0,3) print(v1) print(v2)
输出结果
l Nic
2、len()
获取字符串长度,获取当前字符串中由几个字符组成
str1 = "Nicholas" str2 ="尼古拉斯" v1 = len(str1) v2 = len(str2) print(v1) print(v2)
输出结果
8 4
3、for循环
for 变量名 in 字符串:
for循环可以遍历任何序列的项目,如一个列表或者一个字符串,简单的说就是for循环会自动对字符串的每个字符进行循环。等同于while循环中加上count = count + 1的效果。
str1 ="尼古拉斯真牛逼!" i = 0 while i < len(str1): v = str1[i] print(v) i = i + 1 print("!!!!!")
输出结果
尼 古 拉 斯 真 牛 逼 ! !!!!!
用for循环也可以实现
str1 ="尼古拉斯真牛逼!" for i in str1 : #这里的i就会遍历str1中的所有字符,就是把字符串里的字符都跑一遍 #不用指定v=str1[i],可以直接print(i) print(i) print("!!!!!")
输出结果
尼 古 拉 斯 真 牛 逼 ! !!!!!
4、切片
根据下标输出内容
str1 ="尼古拉斯真牛逼!" v = str1[0:-1] #这里的-1是指倒数第二个字符 print(v)
输出内容
尼古拉斯真牛逼
下标负数的数法下标负数的数法,下标可以为空表示取到头或尾。
尼 古 拉 斯 真 牛 逼 !
-8 -7 -6 -5 -4 -3 -2 -1
即从右向左开始,从-1开始数起。
举个例子
name = " Nicholas" v = name[-2:] print(v)
输出结果
1 as
5、字符串
一旦创建,不可修改,一旦修改或者拼接,都会造成重新生成字符串
Python中,数值类型(int和float)、字符串str、元组tuple都是不可变类型。而列表list、字典dict、集合set是可变类型。
6、range()
range()函数可创建一个整数列表,一般用在 for 循环中。
创建连续或不连续的数字。
Python2中range()直接创建内容,python3中只有for循环时,才一个一个创建
i = 0 for i in range(10): print(i)
输出结果
0 1 2 3 4 5 6 7 8 9
range()函数语法
range(start, stop[, step])
三个参数是开始,结束,步长,开始结束是前闭后开区间,第三个参数就是步长,默认为1,可以看做是跳过(步长-1)个整数输出一次。如果是负数,则是反向减去。
例子
i = 0 for i in range(1,20,3): print(i)
输出结果
1 4 7 10 13 16 19