6.Python字符串
程序员文章站
2022-05-29 08:32:35
字符串 一、定义 字符串可以使用单引号、双引号、三引号定义 单引号和双引号没有明显的区别,三引号可以保留输入的格式。 In [1]: s1 = 'abc' s2 = "abc" s3 = ''' abc ''' #三引号占用的内存空间与单双引号不同,前提是三引号的内容不在一行上,包含了换行。 pri ......
字符串
一、定义
字符串可以使用单引号、双引号、三引号定义
单引号和双引号没有明显的区别,三引号可以保留输入的格式。
in [1]:
s1 = 'abc'
s2 = "abc"
s3 = '''
abc
''' #三引号占用的内存空间与单双引号不同,前提是三引号的内容不在一行上,包含了换行。
print(id(s1),id(s2),id(s3))
print(s1, s2, s3)
常量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输入底层做了处理,因此最后输出的地址是不一样的
in [3]:
#例1:
s3 = s1 + s2 #相当于把s1和s2拼接
print(s3)
in [4]:
#例2:
s4 = s1 * 5 #相当于把s1复制5次拼接
print(s4)
in [5]:
#例3:
s5 = 'stenen'
result = 'ste' in s5
print(result)
in [6]:
#例4:
s5 = 'stenen'
result = 'ste' not in s5
print(result)
in [7]:
#例5:
print('%s说:%s' %('老师','大家要好好学习'))
print('%s说:\'哈哈哈\'' %('steven'))
print(r'%s说:\'哈哈哈\'' %('steven')) #加 r 可以保留转义字符不转义
三、字符串中正则表达式
[] :正则表达式中提取内容
[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[::])
四、常用字符串函数
大小写相关
capitalize() :将字符串第一个字符转换成大写
title() :将每个单词首字母大写
upper() :将字符串转成大写
lower():将字符串转换成小写
in [9]:
message = 'zhaorui is a beautiful girl!'
in [10]:
msg = message.capitalize()
print(msg)
in [11]:
msg = message.title()
print(msg)
in [12]:
msg = message.upper()
print(msg)
in [13]:
msg = message.lower()
print(msg)
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('验证码输入错误')
查找替换相关
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)
in [17]:
position = s1.find('r')
print(position)
position = s1.find('u')
print(position)
p2 = s1.find('u', position+1, len(s1))
print(p2)
in [18]:
#例2:从博客链接找博客名
url = 'https://www.cnblogs.com/king-penguin'
p = url.rfind('/')
print(url[p+1:])
in [19]:
#例3:将链接中的'/'替换为'#'
url = 'https://www.baidu.com'
new_url = url.replace('/', '#')
print(new_url)
in [20]:
msg = '好好学习和天天向上'
result = msg.encode('utf-8')#gbk:中文 gb2312:简体中文 unicode
print(result)
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不满足上传条件')
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())
其他
join():使用指定字符拼接字符串或列表
count():统计字符串中某个字符的个数
in [24]:
new_str = '-'.join('abc')
print(new_str)
list = ['a', 'b', 'c']
new_list = ' '.join(list)
print(new_list)
in [25]:
url = 'https://www.baidu.com'
print('url中"."的个数共有:', url.count('.'))