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)
 
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

posted on 2019-12-26 14:26  King-Penguin  阅读(601)  评论(0编辑  收藏  举报

导航