6 day

四 字符串

4.1 常识

(1)转义字符

转义字符是 \(反斜杠) + 字符 组成的有特殊意义的符号。\n - 换行; \t - 制表符

\ + 指定符号可以使有特殊含义的符号变成其本身,可以让没有特殊含义的符号变得有特殊意义

str2 = 'abc\t123'
print(str2)  #abc	123
print('ab\\tcd')  #ab\tcd

(2)就近原则
(例如:表示字符串的’,表示列表的[]等,相邻最近的两个符号会因为就近原则自动的组成一对)

(3)原始字符串
在字符串前加r或者R,能够将原来字符串中有特殊意义的符号转换成本身。

一个转义字符长始终为1,添加了原始字符串的转义字符的长度为2。

print('12\t34')   #12	34
print(r'12\t34')   #12\t34
print(len(r'\t'),len('\t'))   #2 1

(4)字符串性质:
a.有序序列(下标、索引)
b.不可变序列(没有增删改)

(5)切片
字符串的切片和列表一模一样

(6)查找操作:index()、find()

index():
从左向右查找元素,只找元素第一次出现的位置,找到元素后立即停止查找,找不到报错。ValueError: substring not found
可以指定开始查找的位置

s4 = '王者荣耀王室战争'
print(s4.index('王'))   #0
print(s4.index('王',1))   #4

index()引申出rindex()
rindex():从右向左查找元素,只找元素第一次出现的位置,找到元素后立即停止查找,找不到报错。ValueError: substring not found
rindex()返回的下标也是正序下标

print(s4.rindex('王')) #4
print(s4.rindex('一')) #报错

find()
和index用法一模一样,区别:找不到元素find()不会报错,返回-1
find()方法也存在一个rfind(),使用方法同上rindex()

print(s4.find('一')) #-1

4.2字符串的运算

1.字符串的拼接(得到新的字符串对象)

print('ab' + 'cd') #abcd

2.字符串的重复

print('*' * 20) #********************

3.字符串比较大小
比较第一对不相同的大小
python使用的编码表是ASCII码表的拓展表Unicode编码表(万国码)

print('ab' >'c') #False
print('ab。' > 'abc') #True

chr() - 能够将进制转换成对应的符号
ord() - 能够将符号转换为十进制

print(ord('。')) #12290
print(ord('c')) #99
print(chr(12290)) #。
0 - 9对应的范围: 48 - 57
A - Z: 65 - 90
a - z: 97 - 122
所有的中文:\u4e00 - \u9fa5
print(chr(ord('\u4e00')),chr(ord('\u9fa5')))
for i in range(19968,40870):
    print(chr(i),end='')

4.字符串的成员运算: in 、 not in

print('a' in 'abcd') #True

二进制:0、1
A:二进制:0b01000001,八进制:0o101十进制:65.十六进制:0x41

print(chr(0b01000001),chr(0o101),chr(65),chr(0x41)) #A A A A

hex() - 将进制转换为十六进制
oct() - 将进制转换为八进制

print(hex(65)) #0x41
print(oct(65)) #0o101

4.3字符串的遍历

循环(遍历)
直接遍历

str1 = '王者荣耀'
for i in str1:
    print(i)

间接遍历

for i in range(len(str1)):
    print(str1[i])

获取‘王荣’

for i in range(0,len(str1),2):
    print(str1[i])

练习1:‘abcderf’ -->‘ABCDERF’

str2='abcderf'
str3=''
for i in str2:
    str3 += chr(ord(i)-32)
print(str3)

练习2:‘abcdABCD一二三四’ -->‘ABCDabcd一二三四’

str4 = 'abcdABCD一二三四'
str5 =''
for i in str4:
    if 'a' <= i <= 'z':
        str5 += chr(ord(i)-32)
    elif 'A' <= i <= 'Z':
        str5 += chr(ord(i)+32)
    else:
        str5 += i
print(str5)

4.4字符串的方法和函数

upper() - 小写字母转大写字母

print('abcANM'.upper()) #ABCANM

lower() - 大写字母转小写字母

print('abcANM'.lower()) #abcanm

capitalize() - 将字符串所有单词的首字母转大写,必须是以字母开头的字符串

print('df45DFG98UH;/.b'.capitalize()) #Df45dfg98uh;/.b

title() - 将字符串中所有连续英文字母的子串首字母转大写

print('df45DFG98UH;/.b'.title()) #Df45Dfg98Uh;/.B

split() - 切割,以指定符号为切割点,将切割点左右的字符串分开并保存在列表中

result1 = ',1,2,3,'.split(',')
print(result1) #['', '1', '2', '3', '']
print('3' + '' =='3') #True

join() - 将一个所有元素均为字符串的序列(容器)中的所有元素以指定符号拼接起来

result2 = '-'.join(result1)
print(result2) #-1-2-3-

strip() - 默认去掉字符串头尾的空符号(空格、\n、\t等都是空符号),也可以指定去除的符号

str1='\nab \t\n'
print(str1.strip()) #ab
print(str1.strip('\n')) #ab
print('abc*'.strip('*')) #abc

replace(“old_str”,“new_str”) - 替换,将一个字符串中的全部old_str替换成new_str
replace(“old_str”,“new_str”,“次数”) - 将一个字符串中的指定数量的old_str替换成new_str

str =',1,2,3,'
print(str1.replace(',','')) #123
print(str1.replace(',','',2)) #12,3,

练习题:

例如:
"你可真是个垃圾"
python中有一个模块jieba(结巴)
['你','可','真是','个','垃圾']
现存一个词库(停用词):
['垃圾','菜鸡','辣鸡']
如果jieba分词之后的结果在停用词库中出现过,直接进行替换
str1 = '你可真是个垃圾'
list1 = ['你','可','真是','个','垃圾']
stop_words = ['垃圾','菜鸡','辣鸡']
str2=''
for i in list1:
    if i in stop_words:
        str2 += str1.replace(i,'*'*len(i))
print('屏蔽不文明用语之后的结果:',str2)

#屏蔽不文明用语之后的结果: 你可真是个**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值