python-string

xiaoxiao2021-04-16  46

Python - 字符串

访问

s2="python" print(s2[1]) #y print(s2[-1]) #n user_id='admin001' #1. for i in user_id: #重点 print(i,end=' ') #2. len_id=len(user_id) for i in range(len_id): print(user_id[i],end=' ') print() #3. for i in range(len_id): print(user_id[i:i+1],end=' ') #切出新的值,i

判断用户名是否全是小写字母demo

for i in user_id: if not ('a'<=i<='z'): break else: print('ok')

切片 重点

顺序切片s1='i love python' print(s1[2:6]) #love print(s1[11:]) #on print(s1[-2:]) #on print(s1[-6:-2]) #pyth print(s1[-6:2]) #切不到 print(s1[-6:12]) #pytho print(s1[:]) #全部,拷贝字符串 字符串,变量驻留机制s2=s1 print(s1==s2) print(s1 is s2)#True s3=s1[:] print(s1==s3) print(s1 is s1[:])#True 小整数对象池和大整数对象池

小整数对象池

整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间。

Python 对小整数的定义是 [-5, 256] 这些整数对象是提前建立好的,不会被垃圾回收。在一个 Python 的程序中,无论这个整数处于LEGB中的哪个位置,

所有位于这个范围内的整数使用的都是同一个对象。同理,单个字母也是这样的。

大整数对象池。

终端是每次执行一次,所以每次的大整数都重新创建,而在pycharm中,每次运行是所有代码都加载都内存中,属于一个整体,所以这个时候会有一个大整数对象池,即处于一个代码块的大整数是同一个对象。

跳跃切片s4='abcdefg' print(s4[::2])#aceg,2代表步长 print(s4[-3:2:-1])#ed反向切 print(s4[-3:12:1])#efg print(s4[::-1]) #反转,面试题 长度为20时显示…democontent='To improve your experience, we would like to collect data on the plugins and features you use. No personal data will be collected. An archive of a few kilobytes will be sent weekly.' if len(content)>20: #如果内容的长度大于20就显示前17个字符和...否则就输出 con=content[0:17]+'...' else: con=content print(con) con=content if len(content)<=20 else content[0:17]+'...' print(con)

连接符

s1='py' s2='thon' s3=s1+s2 s3=s1*3 #字符串的重复 pypypy

格式输出 重点

u_name='python' u_age=20 print('i am {0},and i am {1} year old'.format(u_name,u_age)) print('i am {1},and i am {0} year old'.format(u_age,u_name)) print('i am {0:10s},and i am {1} year old'.format(u_name,u_age)) u_name='{0:10s}'.format(u_name) #'python ' print('i am {nn},and i am {aa} year old'.format(nn=u_name,aa=u_age))#用这种比较好

内建函数

count()

返回 str在start和end之间 在 mystr里面出现的次数

mystr.count(str, start=0, end=len(mystr))

str='hello world hello china' num=str.count('hello',0,len(str)) print(num)

找出现频率最高的字母demo

s1='hello world hello china' ss1='' #用于放不重复的字母 for i in s1: if ss1.count(i)==0: #如果ss1里没有该字母就添加进去 ss1=ss1+i max=0; #用于存放最高出现次数 ch='' #用于存放出现次数最多的字母 for i in ss1: m=s1.count(i) #统计ss1中不重复字母在s1中的个数 if max<m: max=m ch=i print(ch,max)

find()

检测 str 是否包含在 mystr中,如果是返回开始的索引值,否则返回-1

mystr.find(str, start=0, end=len(mystr))

word='hello python,hello,world' f='hello' in word print(f)#true res01=word.find('hello',4,22)#13 print(res01)#13

replace

把 mystr 中的 str1 替换成 str2,如果 count 指定,则替换不超过 count 次.

mystr.replace(str1, str2, mystr.count(str1))

word='hello python,hello,world' res02=word.replace('hello','hi',2)

split():非常重要

date='2018-3-1' times=date.split('-') print(times[0]) #2018

如果字符串中有多个分隔符,就需要用正则表达式

join() s2=['2018','3','1'] s3='-' s4=s3.join(s2) print(s4)#2018-3-1 arr=list(word) str_arr=','.join(arr) print(str_arr)#h,e,l,l,o, ,p,y,t,h,o,n,,,h,e,l,l,o,,,w,o,r,l,d str2='python'.join(['_one_','_two_','_three_'])#_one_python_two_python_three_ isdigit()

如果 mystr 只包含数字则返回 True 否则返回 False.

f='3.14' print(f.isdigit())#false,包含. isalpha()

如果 mystr 所有字符都是字母 则返回 True,否则返回 False

mystr.isalpha() isalnum

如果 mystr 所有字符都是字母或数字则返回 True,否则返回 False

重点:以后项目中肯定用得到

判断密码是否由数字字母下划线组成

flag=True for i in pwd: if not (i.isalnum() or i=='_'): flag=False break print(flag)

upper() lower()

strip() lstrip() rstrip() len(s)

strip:去掉前后空格

len:公共方法,有长度就能用,数组和字符串

补充

方法描述string.capitalize()把字符串的第一个字符大写string.center(width)返回一个原字符串居中,并使用空格填充至长度 width 的新字符串string.count(str, beg=0, end=len(string))返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数string.decode(encoding=‘UTF-8’, errors=‘strict’)以 encoding 指定的编码格式解码 string,如果出错默认报一个 ValueError 的 异 常 , 除非 errors 指 定 的 是 ‘ignore’ 或 者’replace’string.encode(encoding=‘UTF-8’, errors=‘strict’)以 encoding 指定的编码格式编码 string,如果出错默认报一个ValueError 的异常,除非 errors 指定的是’ignore’或者’replace’string.endswith(obj, beg=0, end=len(string))检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False.string.expandtabs(tabsize=8)把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8。string.find(str, beg=0, end=len(string))检测 str 是否包含在 string 中,如果 beg 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-1string.format()格式化字符串string.index(str,beg=0,end=len(string))string.isalnum()如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 Falsestring.isalpha()如果 string 至少有一个字符并且所有字符都是字母则返回 True,否则返回 Falsestring.isdigit()如果 string 只包含数字则返回 True 否则返回 False.string.islower()如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 Falsestring.isnumeric()如果 string 中只包含数字字符,则返回 True,否则返回 Falsestring.isspace()如果 string 中只包含空格,则返回 True,否则返回 False.string.istitle()如果 string 是标题化的(见 title())则返回 True,否则返回 Falsestring.isupper()如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 Falsestring.join(seq)以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串string.ljust(width)返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串string.lower()转换 string 中所有大写字符为小写.、string.lstrip()截掉 string 左边的空格max(str)返回字符串 str 中最大的字母。min(str)返回字符串 str 中最小的字母。string.partition(str)有点像 find()和 split()的结合体,从 str 出现的第一个位置起,把 字 符 串 string 分 成 一 个 3 元 素 的 元 组 (string_pre_str,str,string_post_str),如果 string 中不包含str 则 string_pre_str == string.string.replace(str1, str2, num=string.count(str1))把 string 中的 str1 替换成 str2,如果 num 指定,则替换不超过 num 次.string.rfind(str, beg=0,end=len(string) )类似于 find()函数,不过是从右边开始查找.string.rindex( str, beg=0,end=len(string))类似于 index(),不过是从右边开始.string.rjust(width)返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串string.rpartition(str)类似于 partition()函数,不过是从右边开始查找.string.rstrip()删除 string 字符串末尾的空格.string.split(str="", num=string.count(str))以 str 为分隔符切片 string,如果 num有指定值,则仅分隔 num 个子字符串string.splitlines([keepends])按照行(’\r’, ‘\r\n’, \n’)分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。string.startswith(obj, beg=0,end=len(string))检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查.string.strip([obj])在 string 上执行 lstrip()和 rstrip()string.swapcase()翻转 string 中的大小写string.title()返回"标题化"的 string,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle())string.upper()转换 string 中的小写字母为大写string.zfill(width)返回长度为 width 的字符串,原字符串 string 右对齐,前面填充0string.isdecimal()isdecimal()方法检查字符串是否只包含十进制字符。这种方法只存在于unicode对象。

帮助文档

user_id ='admin' print(dir(user_id))#输出所有方法 print(help(user_id.strip))#输出该方法的功能

字符编码 熟记

encode() 将字符串编码为字节码;decode() 将字节码解码为字符串

# -*- coding: UTF-8 -*- # python3字符串编码默认就是unicode word='hello python,hello world,hellojapan 你好 中国' # 将字符串编码为utf-8的字节流格式 byte_utf_word=word.encode('utf-8') print(byte_utf_word) #将字节流解码为字符串 str_utf_word=byte_utf_word.decode('utf-8') # 将字符串编码为GBK的字节流格式 byte_gbk_word=word.encode('GBK') str_gbk_word=byte_gbk_word.decode('GBK')
转载请注明原文地址: https://www.6miu.com/read-4818080.html

最新回复(0)