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
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)
abcabc
In [4]:
#例2:
s4 = s1 * 5 #相当于把s1复制5次拼接
print(s4)
abcabcabcabcabc
In [5]:
#例3:
s5 = 'stenen'
result = 'ste' in s5
print(result)
True
In [6]:
#例4:
s5 = 'stenen'
result = 'ste' not in s5
print(result)
False
In [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)
False
In [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
12
In [18]:
#例2:从博客链接找博客名
url = 'https://www.cnblogs.com/King-Penguin'
p = url.rfind('/')
print(url[p+1:])
King-Penguin
In [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 c
In [25]:
url = 'https://www.baidu.com'
print('url中"."的个数共有:', url.count('.'))
url中"."的个数共有: 2
评论关闭