字符串
作用:传递信息。
字符串表达式:使用单引号、双引号引起来的一串符号叫字符串。
字符串的性质:
- 字符串是有序的(下标、切片)。
- 字符串是不可变的额(没有增删改)
- 字符串的容器符号:’ ‘, " ",’‘’ ‘’',“”" “”";类型:str。
- 字符串的分类:普通字符、转义字符、原始字符串。
一、转义字符
有特殊含义的符号:\n,\t…。原来转义字符规定使用\ + 数字表示有特殊意义的符号。
现在C语言规定\ + 符号表示有特殊意义的符号。
\ + 指定符号可以使有特殊含义的符号变成其本身,可以让没有特殊含义的符号变得有特殊意义。
print('ab\tc\nd')
# ab c
# d
print('ab\'cd')
# ab'cd
print('ab\\tcd')
# ab\tcd
二、原始字符串
在字符串前面添加r/R,能够让字符串中的转义字符变成其本身。
一个转义字符长度始终为1,添加了原始字符串的长度为2。
print(r'ab\tc\nd')
# ab\tc\nd
print(len(r'\t'),len('\t'))
# 2 1
字符串的运用
1. 字符串的拼接(得到的是新的字符串对象)
print('ab' + 'cd')
# abcd
2. 字符串的重复
print('*' * 20)
# ********************
3. 字符串比较大小
比较第一对不相同元素的大小。
python使用的编码表是ASCII码表的拓展表Unicode编码表(万国码)
print('ab' > 'c')
# Flase 比较a与c的编码大小
print('ab.' > 'abc')
# Flase 比较.与c的编码大小
chr():能够将进制转换成对应的符号。
ord():能够将符号转换成十进制。
print(ord('。'))
# 12290
print(chr(12290))
# 。
0-9对应范围:48-57
A-Z:65-90
a-z:97-122
所有中文:\u4e00-\u9fa5或者19968-40870
所有韩文:4352-4608
for i in range(19968,40870):
print(chr(i),end='')
# 一丁丂七丄丅丆万丈三上下丌不与丏丐丑丒专且丕世丗丘丙业丛东丝丞丟丠...
for i in range(4352,4608):
print(chr(i),end='')
# ᄀᄁᄂᄃᄄᄅᄆᄇᄈᄉᄊᄋᄌᄍᄎᄏᄐᄑᄒᄓᄔᄕᄖᄗᄘᄙᄚᄛᄜᄝᄞᄟᄠᄡ...
字符串的成员运算:in、not in
print('a' in 'abcd')
# True
二进制:0、1,0b表示二进制,0x表示十六进制,0o表示八进制。
A:二进制:0b01000001,十进制:65,十六进制:0x41,八进制:0o101。
hex():将进制转换为十六进制。
oct():将进制转换为八进制。
print(chr(0b01000001),chr(65),chr(0x41),chr(0o101))
# A A A A
字符串的下标与切片
例:输出“山”和“说”
str1 = """
从前有座山,
山上有座庙,
庙里有个老和尚,
老和尚对小和尚说
"""
print(str1[5])
print(str1[-2])
# 山
# 说
回车(\n):长度为1
,下标随之变化。
切片
-
将“从前有座山”取出。
-
将“庙有老”取出。
-
输出“庙座有上山”。
str1 = """ 从前有座山, 山上有座庙, 庙里有个老和尚, 老和尚对小和尚说 """ print(str1[1:6]) print(str1[15:20:2]) print(str1[12:7:-1]) # 从前有座山 # 庙有老 # 庙座有上山
换行:\
num = 1+2+3\
+4+5+6
等同于:num = 1+2+3+4+5+6
str2 = ‘215646’
‘55465’
等同于:str2 = ‘21564655465’num = 1+2+3+4+5+6+7+8\ +8+9+0+4+2+2+45+2 print(num) # 108
字符串的遍历
循环(遍历):直接遍历、间接遍历。
直接遍历
str1 = '王者荣耀'
for i in str1:
print(str1,end=' ')
# 王 者 荣 耀
间接遍历
str1 = '王者荣耀'
for i in range(len(str1)):
print(str1[i],end=' ')
# 王 者 荣 耀
获取“王“、”荣”。
str1 = '王者荣耀'
for i in range(0,len(str1),2):
print(str1[i])
# 王 荣
练习1:将“abcdefg”转换成“ABCDEFG"
str2 = 'abcdefg'
str3 =''
for i in str2:
a = chr(ord(i)-32)
str3 += a
print(str3)
# ABCDEFG
练习2:’abcdABCD一二三四‘转换为’ABCDabcd一二三四‘
str4 = 'abcdABCD一二三四'
str5 = ''
for i in str4:
if 97 <= ord(i) <= 122:
str5 += chr(ord(i)-32)
elif 'A' <= i <= 'Z':
str5 += chr(ord(i)+32)
else:
str5 += i
print(str5)
# ABCDabcd一二三四
字符串的方法和函数
upper():将小写字母转换为大写字母
print('abc'.upper())
print('aAGbMckHbsjJJNA,。;'.upper())
# ABC
# AAGBMCKHBSJJJNA,。;
lower():将大写字母转换为小写字母
print('aAGbMckHbsjJJNA,。;'.lower())
# aagbmckhbsjjjna,。;
capitalize():将以字母开头的字符串中所有单词的首字母大写
print('canckk。;mskl1546,snbcic'.capitalize())
# Canckk。;mskl1546,snbcic
title():将字符串中所有连续英文字母的子串首字母大写
print('canckk.;mskl1546,snbcic'.title())
# Canckk.;Mskl1546,Snbcic
split():切割,以指定符号为切割点,将切割点左右的字符串分开并保存到列表中。
print('1,2,3'.split(','))
# ['1', '2', '3']
join():将一个所有元素均为字符串的序列(容器)中的所有元素以指定符号拼接起来。
print(','.join(['1','2','3']))
# 1,2,3
strip():默认去除字符串头尾的空符号(空格、\n、\t等都是空符号),也可以指定去除的符号。
str1 = '\nabc \t\n'
print('*' * 20)
print(str1)
#
# abc
#
print('*' * 20)
print(str1.strip())
# abc
print('*' * 20)
print(str1.strip('\n'))
# abc (后面有\t形成的空格)
print('*' * 20)
print('abc*'.strip('*'))
# abc
replace():替换
replace(‘old_str’,‘new_old’):替换,将一个字符串中全部old_str替换成new_str;replace(‘old_str’,‘new_old’,‘次数’):将一个字符串中指定数量的old_str替换成new_str。
str1 = ',a,b,c,'
print(str1.replace(',',''))
# abc
print(str1.replace(',','',2))
# ab,c,
例:将不文明词语替换成*
将句子按照主、谓、宾、定、状、补等分割成一个列表。
str2 = "你可真是个菜鸡"
list1 = ['你','可','真是','个','菜鸡']
stop_words = ['垃圾','辣鸡','菜鸡']
str3 = ''
for i in list1:
if i in stop_words:
str3 += str2.replace(i,'*' * len(i))
print('本句话替换之后的结果:',str3)
# 本句话替换之后的结果: 你可真是个**