文章目录
字符串
1.什么是字符串
- 用引号包括起来的一串字符。
- 用引号来创建字符串。
- 单引号
- 双引号
- 三单引号
- 三双引号
str1='abcdefg'
str2="ABCDEFG"
str3='''I LOVE CHINA'''
str4="""俺がガンダムだ"""
print(str1)
print(str2)
print(str3)
print(str4)
print(type(str1))
print(type(str2))
print(type(str3))
print(type(str4))
# 输出
abcdefg
ABCDEFG
I LOVE CHINA
俺がガンダムだ
<class 'str'>
<class 'str'>
<class 'str'>
<class 'str'>
-
注意:
-
若字符串中有引号,要使用不同的引号包括字符串,或者使用转义字符‘\’将字符串中的引号转义,或者字符串前面加r。
-
单引号和双引号使用时不能换行。换行需要加‘\’
str1="ABC" \ "DEFG" print(str1)
-
#输出
ABCDEFG
```
2.字符串的运算及常见操作
2.1 拼接
-
使用+号拼接
-
拼接基于同一种数据类型
a = ' hello '
b = ' world '
print(a + b)
#输出
hello world
2.2 重复
a = ' City '
print(a * 3)
#输出
City City City
2.3 索引(偏移)[]
- len() 返回字符串长度
str1='abcdefg1234567890'
for i in str1:
print(i,end=' ')
print('')
for i in range(len(str1)):
print(str1[i],end=' ')
#输出
a b c d e f g 1 2 3 4 5 6 7 8 9 0
a b c d e f g 1 2 3 4 5 6 7 8 9 0
2.4 切片[::]
- [start:end:step] start为起始位置,end-1为终止位置,step为步长,默认为1
str1='abcdefg1234567890'
print(str1[1:6])
print(str1[-5:-1])
print(str1[-1:-5:-1])
print(str1[1:10:2])
print(str1[0:])
print(str1[:-1])
print(str1[::-1])
#输出
bcdef
6789
0987
bdf13
abcdefg1234567890
abcdefg123456789
0987654321gfedcba
2.5 大小写互换
str1 = 'life is short, you need python'
print(str1.lower()) # 转小写
print(str1.upper()) # 转大写
print(str1.swapcase()) # 大小写互换
print(str1.title()) # 转为标题模式
print(str1.capitalize()) # 首字母大写
#输出
life is short, you need python
LIFE IS SHORT, YOU NEED PYTHON
LIFE IS SHORT, YOU NEED PYTHON
Life Is Short, You Need Python
Life is short, you need python
# 验证码程序
import random
while True:
str1 = ''
for i in range(6):
x = random.random()
if x > 0.5:
str1 += chr(random.randint(65, 90))
else:
str1 += chr(random.randint(97, 122))
print('验证码:',str1)
print('请输入验证码:(不用区分大小写)')
x = input()
if x.upper() == str1.upper():
print('输入正确!')
break
else:
print('输入错误!请重新输入。')
#输出
验证码: FVlily
请输入验证码:(不用区分大小写)
123
输入错误!请重新输入。
验证码: NPSPuW
请输入验证码:(不用区分大小写)
npspuw
输入正确!
2.6 字符串的格式输出对齐
str1 = 'life is short, you need python'
# str1.center([len],'填充符号')
# str1.ljuest([len],'填充符号')
# str1.rjust([len],'填充符号')
# str1.zfill([len])
print(str1.center(41,'-')) #局中对齐,41表示占位长度,‘-’为填充字符
print(str1.ljust(41, '-')) #左对齐
print(str1.rjust(41, '-')) #右对齐
print(str1.zfill(41)) #右对齐,默认填充0
#输出
------life is short, you need python-----
life is short, you need python-----------
-----------life is short, you need python
00000000000life is short, you need python
2.7 删除指定字符
str1='\n\tMQWERTYUIOPASDFGHJKLZXCVBNM\t\n'
str1=str1.strip() #删除两边指定字符,若不指定则删除常见换行符,制表符
print(str1)
str1=str1.lstrip('M') #删除左边指定字符
print(str1)
str1=str1.rstrip('M') #删除右边指定字符
print(str1)
#输出
MQWERTYUIOPASDFGHJKLZXCVBNM
QWERTYUIOPASDFGHJKLZXCVBNM
QWERTYUIOPASDFGHJKLZXCVBN
2.8 计数
str1 = 'life is short, you need python'
print(str1.count('o')) #查找o出现的次数
print(str1.count('o',9,15)) #查找索引9-14中出现的次数
#输出
3
1
2.9 字符串搜索定位和替换
- 定位
str1 = 'life is short, you need python'
print(str1.find('o')) #返回字符串中第一次出现'o'的索引位置,从左往右
print(str1.find('o', 12, 17)) #返回字符串12-16中第一次'o'出现的索引位置
print(str1.find('z')) #当查找不到时,返回值为-1
# print(str1.index('z')) #当查找不到时,会报错,其余与find相同
print(str1.rfind('o')) #从右往左第一次出现的位置
#输出
10
16
-1
28
- 替换
str1 = 'life is short, you need python'
#str1.replace('被替换字符',‘替换字符’,[n]) n为可以选参数,表示替换多少字符,默认为全部
str1=str1.replace(' ', '@' , 2 ) #将字符串中的‘ ’前两个替换为‘@’
print(str1)
#输出
life@is@short, you need python
2.10 字符串条件判断
str1='123123abc'
str2='abc'
str3='123'
print(str1.isalnum()) #判断字符串是否由数字或字母组成
print(str2.isalpha()) #判断字符串是否仅由字母组成
print(str3.isdigit()) #判断字符串是否仅由数字组成
#输出
True
True
True
2.11 制表符的转化
str1 = 'abc\t123\tqwe\t1'
str1 = str1.expandtabs(1) #将制表符转换为1个空格
print(str1)
#输出
abc 123 qwe 1
2.12 字符串的分割变换
#join(),将指定字符插入到元素之间
#split(),以指定字符分割,并且去除该字符
#partition(),以指定字符分割,但保留该字符
str1 = '123'
str2 = 'abc'
str1 = str1.join(str2) # 在str1的每个元素之间插入str2字符串,返回为字符串
print(str1)
list1 = ['I ', ' LOVE ', ' PYTHON.']
print(''.join(list1)) #将列表快速转换为字符串
str1 = 'life is short, you need python'
list1 = str1.split('o',1) #将字符串按 ‘o’分割,1表示分割几次,默认全部分割,split不保留分割字符
print(list1) #返回为列表
str1 = 'life is short, you need python'
tp1 = str1.partition('o') #将字符串按 ‘o’分割,只分割第一次出现的,从左往右
print(tp1) #返回一个含有3个元素的元组,第一个元素为分割符左边的内容,第二个为分割符,第三个为分隔符 右边的内容
#输出
a123b123c
I LOVE PYTHON.
['life is sh', 'rt, you need python']
('life is sh', 'o', 'rt, you need python')
2.13 ASCII和字符的转换
chr() digit —>alpha
ord() alpha —>digit
for i in range(ord('a'),ord('z')+1):
print(chr(i),end=' ')
#输出
a b c d e f g h i j k l m n o p q r s t u v w x y z
拓展
import string
print(string.ascii_letters) #大小写字母
print(string.ascii_lowercase) #大写字母
print(string.ascii_uppercase) #小写字母
print('%o' % (17)) #将17转为八进制0o21
print('%x' % (17)) #将17转换为十六进制0x11
#输出
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789
21
11
#验证码程序改进
import string
import random
while True:
str1 = ''
for i in range(6):
x = random.random()
if x > 0.7:
str1 += random.choice(string.ascii_lowercase)
elif x>0.4:
str1 += random.choice(string.ascii_uppercase)
else:
str1+= str(random.choice(string.digits))
print('验证码:',str1)
print('请输入验证码:(不用区分不大小写)')
x = input()
if x.upper() == str1.upper():
print('输入正确!')
break
else:
print('输入错误!请重新输入。')
#输出结果
验证码: G2S1PJ
请输入验证码:(不用区分大小写)
G2s1pg
输入错误!请重新输入。
验证码: R3R706
请输入验证码:(不用区分大小写)
r3r706
输入正确!
语法格式
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
等价于
print(value1, value2, valuen, sep=' ', end='\n', file=sys.stdout, flush=False)
for i in range(1,5):
print(i,end=' ')
print(i,end='$')
print('')
print(1,2,3,4,5,sep='$')
#输出
1 1$2 2$3 3$4 4$
1$2$3$4$5
print('%d' % 668)
name = '清隆绫小路'
age = 18
print('His name is %s, his age is %d.' % (name, age))
print('His name is ', name, ', his age is ', age, '.')
print('His name is ' + name + ', his age is ' + str(age) + '.')
2.14 格式化字符串
%号格式化
- 占位符
格式 | 描述 |
---|---|
%d | 有符号的整数 |
%s | 字符串 |
%c | 字符及ASCII码 |
%o | 无符号八进制整数 |
%x | 无符号十六进制整数 |
%X | 无符号十六进制整数,后面ADCDEF会随我们输入大小写而确定大小写 |
%e%E | 科学计数法,浮点数 |
%f | 浮点数 |
%格式化字符串 用%匹配参数,注意个数一一对应
print('%d%%'%100)
#输出
100%
format格式化
(1)位置映射
print('姓名:{},年龄:{}'.format('飞鸟','18'))
#输出
姓名:飞鸟,年龄:18
(2)关键字映射
print('姓名:{},年龄:{},{addresss}'.format('飞鸟','18',addresss='日本东京'))
print("第一个元素是{0[0]},第二个元素是{0[1]},"
"第三个元素是{0[2]};第四个元素是{1[0]},第五个元素是{1[1]}".format(('www.', 'google.', 'com'),
('baidu.', 'com')))
一对应
print('%d%%'%100)
#输出
100%
format格式化
(1)位置映射
print('姓名:{},年龄:{}'.format('飞鸟','18'))
#输出
姓名:飞鸟,年龄:18
(2)关键字映射
print('姓名:{},年龄:{},{addresss}'.format('飞鸟','18',addresss='日本东京'))
print("第一个元素是{0[0]},第二个元素是{0[1]},"
"第三个元素是{0[2]};第四个元素是{1[0]},第五个元素是{1[1]}".format(('www.', 'google.', 'com'),
('baidu.', 'com')))