6.Python字符串
字符串
一、定义
字符串可以使用单引号、双引号、三引号定义
单引号和双引号没有明显的区别,三引号可以保留输入的格式。
In [1]:
s1 = 'abc' s2 = "abc" s3 = ''' abc ''' #三引号占用的内存空间与单双引号不同,前提是三引号的内容不在一行上,包含了换行。 print(id(s1),id(s2),id(s3)) print(s1, s2, s3)
2082896934312 2082896934312 2082938794144 abc abc abc
常量is是true,input输入底层做了处理,因此最后输出的地址是不一样的
In [2]:
s1 = input('Please input string:') s2 = input('Please input string:') print(s1 == s2) print(s1 is s2) #常量is是true,input输入底层做了处理,因此最后输出的地址是不一样的
Please input string:abc Please input string:abc True False
二、字符串运算符
A + B :字符串A和B拼接 例¶
A * n :复制n次A并拼接 例¶
A in B :判断A是否在B里面 例3
A not in B:判断A不在B里面 例4
print里面字符串格式化 例5
In [3]:
#例1: s3 = s1 + s2 #相当于把s1和s2拼接 print(s3)
abcabcIn [4]:
#例2: s4 = s1 * 5 #相当于把s1复制5次拼接 print(s4)
abcabcabcabcabcIn [5]:
#例3: s5 = 'stenen' result = 'ste' in s5 print(result)
TrueIn [6]:
#例4: s5 = 'stenen' result = 'ste' not in s5 print(result)
FalseIn [7]:
#例5: print('%s说:%s' %('老师','大家要好好学习')) print('%s说:\'哈哈哈\'' %('steven')) print(r'%s说:\'哈哈哈\'' %('steven')) #加 r 可以保留转义字符不转义
老师说:大家要好好学习 steven说:'哈哈哈' steven说:\'哈哈哈\'
三、字符串中正则表达式
[] :正则表达式中提取内容
[a : b] : 取a b范围内的内容,包含a不包含b。
[a : b : c] :第三个c表示方向,1表示正向,-1表示反向。可用作倒叙输出字符串。默认为1。
其他详细操作参考正则表达式
In [8]:
filename = 'picture.png' print('------------默认顺序数------------') print(filename[6]) #取第6个字符,下标为5的字符 print(filename[0:6]) #取下标为0-5个字符 print(filename[3:]) #冒号后面省略表示一直取到结尾 print(filename[:3]) #冒号前省略表示从第0个开始 print('--------------倒着数--------------') print(filename[-1]) #取倒数最后一个字符 print(filename[-1:]) print(filename[-4:]) print('---------------倒叙---------------') print(filename[::-1]) print(filename[::])
------------默认顺序数------------ e pictur ture.png pic --------------倒着数-------------- g g .png ---------------倒叙--------------- gnp.erutcip picture.png
四、常用字符串函数
大小写相关
capitalize() :将字符串第一个字符转换成大写
title() :将每个单词首字母大写
upper() :将字符串转成大写
lower():将字符串转换成小写
In [9]:
message = 'zhaorui is a beautiful girl!'In [10]:
msg = message.capitalize() print(msg)
Zhaorui is a beautiful girl!In [11]:
msg = message.title() print(msg)
Zhaorui Is A Beautiful Girl!In [12]:
msg = message.upper() print(msg)
ZHAORUI IS A BEAUTIFUL GIRL!In [13]:
msg = message.lower() print(msg)
zhaorui is a beautiful girl!In [14]:
#案例:验证码 s = 'QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm0123456789' print(len(s)) code = '' import random for i in range(4): ran = random.randint(0, len(s)-1) code += s[ran] print('验证码:', code) user_input = input('请输入验证码:') if code.lower() == user_input.lower(): print('验证码正确') else: print('验证码输入错误')
62 验证码: rWdy 请输入验证码:rWdy 验证码正确
查找替换相关
find(str, beg=0, end=len(string)):查找查找内容并返回第一次出现的位置下标,-1:没有该内容。例1
rfind():从字符串右侧开始检索字符的位置。例2
lfind():从字符串左侧开始检索字符的位置。
index():跟find()方法一样,只不过如果str不存在字符出中会报一个异常,使用find比较多。
rindex()
lindex()
replace( old, new):替换选中的字符为新设定的字符。例3
In [15]:
s1 = 'index lucy lucky goods' #s = '01234 6789 1112131415 1718192021'In [16]:
result = 'R' in s1 print(result)
FalseIn [17]:
position = s1.find('R') print(position) position = s1.find('u') print(position) p2 = s1.find('u', position+1, len(s1)) print(p2)
-1 7 12In [18]:
#例2:从博客链接找博客名 url = 'https://www.cnblogs.com/King-Penguin' p = url.rfind('/') print(url[p+1:])
King-PenguinIn [19]:
#例3:将链接中的'/'替换为'#' url = 'https://www.baidu.com' new_url = url.replace('/', '#') print(new_url)
https:##www.baidu.com
编码相关的
encode(encoding='UTF-8', errors='strict'):以指定编码格式编码字符串,如果出错默认报一个ValueError异常,除非指定的是'ignore'或'replace'
decode():解码
In [20]:
msg = '好好学习和天天向上' result = msg.encode('utf-8')#gbk:中文 gb2312:简体中文 unicode print(result)
b'\xe5\xa5\xbd\xe5\xa5\xbd\xe5\xad\xa6\xe4\xb9\xa0\xe5\x92\x8c\xe5\xa4\xa9\xe5\xa4\xa9\xe5\x90\x91\xe4\xb8\x8a'In [21]:
result = b'\xe5\xa5\xbd\xe5\xa5\xbd\xe5\xad\xa6\xe4\xb9\xa0\xe5\x92\x8c\xe5\xa4\xa9\xe5\xa4\xa9\xe5\x90\x91\xe4\xb8\x8a' str = result.decode('utf-8') print(str)
好好学习和天天向上
判断字符串
startswith():判断是以什么开头的
endswith():判断是以什么结尾的
In [22]:
#案例:文件上传并只能上传以'He'命名开头的图片 filename1 = '笔记.doc' filename2 = 'Hello.png' result = filename1.endswith('.png') or filename1.endswith('.jpg') #判断文件是否以'.png'或'.jpg'结尾 if result: print('正准备上传filename1...') else: print('filename1不满足上传条件') result = filename2.endswith('.png') or filename1.endswith('.jpg') #判断文件是否以'.png'或'.jpg'结尾 if result: print('正准备上传filename2...') else: print('filename2不满足上传条件')
filename1不满足上传条件 正准备上传filename2...
判断字符串组成成分
isalnum():如果字符串至少有一个字符并且所有字符都是字母或数字则返回True,否则就返回False
isalpha():如果字符串至少一个字符并且所有字符都是字母则返回True,否则就返回False
isdigit():如果字符串质保函数字则返回True,否则就返回False
In [23]:
str1 = 'abcdef123' str2 = 'abcdef' str3 = '123456' print(str1.isalnum()) print(str1.isalpha()) print(str1.isdigit()) print('-------------------') print(str2.isalnum()) print(str2.isalpha()) print(str2.isdigit()) print('-------------------') print(str3.isalnum()) print(str3.isalpha()) print(str3.isdigit())
True False False ------------------- True True False ------------------- True False True
其他
join():使用指定字符拼接字符串或列表
count():统计字符串中某个字符的个数
In [24]:
new_str = '-'.join('abc') print(new_str) list = ['a', 'b', 'c'] new_list = ' '.join(list) print(new_list)
a-b-c a b cIn [25]:
url = 'https://www.baidu.com' print('url中"."的个数共有:', url.count('.'))
url中"."的个数共有: 2
更多精彩