欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

6.Python字符串

程序员文章站 2023-09-28 20:27:50
字符串 一、定义 字符串可以使用单引号、双引号、三引号定义 单引号和双引号没有明显的区别,三引号可以保留输入的格式。 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)
 
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)
 
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