当前位置:   article > 正文

学习Python的 第六天Day6, 今天你get了吗❤

学习Python的 第六天Day6, 今天你get了吗❤

Day6

1. 字符串的运算

字符串
作用:传递信息
字符串表达式:使用单引号或双引号引起来的一串符号叫字符串。
如:’ ‘, " ", ‘’’ ‘’', “”" “”"

字符串的性质
a. 字符串是有序的(下标、切片)
b. 字符串是不可变的(没有增删改)
c. 字符串的容器符号’‘, “”, ‘’’ ‘’', “”" “”";类型:str
d. 字符串分类:普通字符、转义字符、原始字符串

1.1 转义字符

a. 有特殊含义的符号。原来转义字符规定使用 \ + 数字表示有特殊意义的符号。
b. 现在C语言规定 \ + 特定符号表示有特殊意义的符号。
c. \ + 指定符号可以使有特殊含义的符号变成其本身,可以让没有特殊含义的符号变得有特殊意义。

print('a\rb\tcd\ne')  # \t相当于insert(改写)

# 运行结果
'''
b	cd
e
'''
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
print('ab\'cd')

# 运行结果
# ab'cd
  • 1
  • 2
  • 3
  • 4
print('ab\\tcd')

# 运行结果
# ab\tcd
  • 1
  • 2
  • 3
  • 4

1.2 原始字符串

a. 在字符串前面添加r或R,能将字符串中的转义字符变成其本身。
b. 一个转义字符长度始终为1,添加了原始字符串的转义字符长度是2。

print('12\t34')
# 运行结果
# 12	34
  • 1
  • 2
  • 3
print(r'12\t34')
# 运行结果
# 12\t34
  • 1
  • 2
  • 3
print(len(r'\t'), len('\t'))
# 运行结果
# 2 1
  • 1
  • 2
  • 3

2. 字符串的运算

2.1 字符串的拼接(得到的是新的字符串对象)

print('ab' + 'cd')

# 运行结果
# abcd
  • 1
  • 2
  • 3
  • 4

2.2 字符串的重复

print('*' * 20)

# 运行结果
# ********************
  • 1
  • 2
  • 3
  • 4

2.3 字符串比较大小

a. 比较第一对不相同元素的大小(编码值)
b. Python使用的编码表是ASCII编码表的拓展表Unicode编码表(万国码)

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

# 运行结果
# False
# True
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

0-9对应的范围:48-57
A-Z对应的范围:65-90
a-z对应的范围:97-122
所有的中文:\u4e00-\u9fa5(19968-40869)

print(ord('\u4e00'), ord('\u9fa5'))
for i in range(19968, 40870):
    print(chr(i), end='')

# 运行结果
'''
一丁丂七丄丅丆万丈三上下丌不与丏丐丑丒专且丕世丗丘丙业丛东丝丞丟丠両丢丣两严並丧丨丩个丫丬中丮丯丰丱串
(略)
齷齸齹齺齻齼齽齾齿龀龁龂龃龄龅龆龇龈龉龊龋龌龍龎龏龐龑龒龓龔龕龖龗龘龙龚龛龜龝龞龟龠龡龢龣龤龥----
'''
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

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

print('a' in 'abcd')

# 运行结果
# True
  • 1
  • 2
  • 3
  • 4

2.5 进制转换

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

print(ord('。'))
print(chr(12290))

# 运行结果
# 12290
# 。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

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

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

# 运行结果
# A A A A
  • 1
  • 2
  • 3
  • 4

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

print(hex(65))
print(oct(65))

# 运行结果
'''
0x41
0o101
'''
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

3. 下标和切片

3.1 下标

str1 = """
从前有座山,
山上有座庙,
庙里有个老和尚和一个小和尚,
老和尚的对小和尚说:
"""
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

获取第一个"山",下标为5

print(str1[5])

# 运行结果
# 山
  • 1
  • 2
  • 3
  • 4

根据"说"的下标获取“说”

print(str1[-3])

# 运行结果
# 说
  • 1
  • 2
  • 3
  • 4
  • 注意:一个回车键代表的一个\n,长度为1

3.2 切片

1.将“从前有座山”取出。
2.将“庙有老”取出来
3.将“庙座有上山”取出

print(str1[1: 6])
print(str1[15: 21: 2])
print(str1[12: 7: -1])

# 运行结果
'''
从前有座山
庙有老
庙座有上山
'''
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

3.3 一行完整的代码如何换行写,不影响输出结果?

输入 \ 后按enter键

num = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 \
+ 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8
print(num)

str2 = '123456'\
    '7890123'
print(str2)

# 运行结果
'''
72
1234567890123
'''
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

4. 字符串的遍历(循环)

4.1 直接遍历

str1 = '王者荣耀'
for i in str1:
    print(i)
    
#运行结果
'''
王
者
荣
耀
'''
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

4.2 间接遍历

str1 = '王者荣耀'
for i in range(len(str1)):
    print(str1[i])
    
#运行结果
'''
王
者
荣
耀
'''
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

获取“王荣”

str1 = '王者荣耀'
for i in range(0, len(str1), 2):  # 一定要写初始值
    print(str1[i])

# 运行结果
'''
王
荣
'''
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

4.3 练习

  1. “abcdef" 转换为 “ABCDEF”
str2 = 'abcdef'
str3 = ''
# print(ord('a'))
for i in str2:
    str3 += chr(ord(i) - 32)
print(str3)

# 运行结果
# ABCDEF
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  1. 将“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)

# 运行结果
# ABCDabcd一二三四
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

5. 字符串的方法和函数

5.1

  1. upper() - 小写字母转大写字母
print('abc'.upper())

# 运行结果
# ABC
  • 1
  • 2
  • 3
  • 4
  1. lower() - 大写字母转小写字母
print('ABC'.lower())

# 运行结果
# abc
  • 1
  • 2
  • 3
  • 4
  1. capitalize() - 将字符串中所有单词的首字母转大写, 必须以字母开头的字符串
print('abc12345hbvdg;.n'.capitalize())

# 运行结果
# Abc12345hbvdg;.n
  • 1
  • 2
  • 3
  • 4
  1. title() - 将字符串中所有连续英文字母的字串首字母转大写
print('abc12345hbvdg;.n;,m'.title())

# 运行结果
# Abc12345Hbvdg;.N;,M
  • 1
  • 2
  • 3
  • 4
  1. split() - 切割,以指定符号位切割点,将切割点左右的字符串分开后一并保存到列表中
result1 = '1, 2, 3, a'.split(',')
print(result1)
print('3' + '' == '3')

# 运行结果
'''
['1', ' 2', ' 3', ' a']
True
'''
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  1. join() - 将一个所有元素均为字符串的序列(容器)中的所有元素以指定符号拼接起来
result1 = ['1', ' 2', ' 3', ' a']
result2 = ','.join(result1)
print(result2)

# 运行结果
# 1, 2, 3, a
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  1. strip() - 默认去掉字符串头尾的空字符号(空格、\n、\t等都是空符号),也可以指定去掉的符号

如:

str1 = '\nabc \t\n'
print('----------')
print(str1)
print('----------')

# 运行结果
'''
----------

abc 	

----------
'''
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
str1 = '\nabc \t\n'
print('----------')
print(str1)
print('----------')

print(str1.strip())
print('----------')

print(str1.strip('\n'))
print('----------')

print('abc*'.strip('*'))

# 运行结果
'''
----------

abc 	

----------
abc
----------
abc 	
----------
abc
'''
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  1. replace(‘old_str’, ‘new_old’) - 替换,将一个字符串中的全部old_str替换成new_str
    replace(‘old_str’, ‘new_old’, 数量) - 将一个字符串中指定数量的old_str替换成new_str
str1 = ',1,2,3,'
print(str1.replace(',', ''))
print(str1.replace(',', '', 2))

# 运行结果
'''
123
12,3,
'''
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

5.2 练习

王者荣耀: 屏蔽不文明词汇

“你可真是个垃圾”
主语、谓语、宾语等

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)

# 运行结果
# 屏蔽不文明用语之后的结果: 你可真是个**
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

Day6 over!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/672676
推荐阅读
相关标签
  

闽ICP备14008679号