字符串
作用:传递信息
字符串表达式:使用单引号或者双引号引起来的一串符号
字符串的性质
1.字符串是有序的(下标、切片)
2.字符串是不可变的(无增删改)
3.字符串的容器符号:‘’,“”,‘’‘’‘’,“”“”“”;类型:str
4.字符串分类:普通字符、转义字符、原始字符串
一、转义字符
----有特殊含义的符号
原来转义字符规定使用\ + 数字表示有特殊意义的符号;现在c语言规定\ + 特定符号表示有特殊意义的符号
print('ab\tc\nd')
print('ab\'cd')
print('ab\\tcd')
ab c
d
ab’cd
ab\tcd
\ + 指定符号可以使有特殊含义的符号变成其本身
可以让没有特殊含义的符号变得有特殊意义
二、原始字符串
在字符串前面添加R,r,可以将字符串中的转义字符变成其本身
print('12\t34')
print(r'12\t34')
12 34
12\t34
一个转义字符长度始终为1,添加了原始字符串得到转义长度是2
print(len(r'\t'), len('\t'))
2 1
字符串的运算
1.字符串的拼接
得到的是新的字符串对象
print('ab' + 'cd')
abcd
2.字符串的重复
print('*' * 20)
3.字符串比较大小
遵循比较第一对不相同元素的大小原则
Python使用的编码表是ASCII码表的拓展表Unicode编码表(万国码)
print('ab' > 'c') # ----> a和c比较
False
4.chr()/ord()
chr() — 能够将进制转换成对应的符号
ord() — 能够将符号转换成十进制
print(ord('c'))
print(ord('。'))
print('ab。' > 'abc')
print(chr(12290))
99
12290
True
。
注:
- 0-9 数字对应的范围:49-57
- A-Z 对应的范围: 65-90
- a-z 对应的范围: 97-122
- 左右的中文:\u4e00 - \u9fa5 (十六进制); 19968-40869(十进制)
print(chr(ord('\u4e00')), chr(ord('\u9fa5')))
for i in range(19968, 40870):
print(chr(i), end=' ')
(一部分)
詇 詈 詉 詊 詋 詌 詍 詎 詏 詐 詑 詒 詓 詔 評 詖 詗 詘 詙 詚 詛 詜 詝 詞 詟 詠 詡 詢 詣 詤 詥 試 詧 詨 詩 詪 詫 詬 詭 詮 詯 詰 話 該 詳 詴 詵 詶 詷 詸 詹 詺 詻 詼 詽 詾 詿 誀 誁 誂 誃 誄 誅 誆 誇 誈 誉 誊 誋 誌 認 誎 誏 誐 誑 誒 誓 誔 誕 誖 誗 誘 誙 誚 誛 誜 誝 語 誟 誠 誡 誢 誣 誤 誥 誦 誧 誨 誩 說 誫 説 読 誮 誯 誰…
5.字符串的成员运算
in、 not in
print('a' in 'abc')
True
补充
二进制:0、1
例:A:二进制:0b01000001,十进制:65,十六进制:0x41,八进制符号:0o101
print(chr(0b01000001), chr(65), chr(0x41), chr(0o101))
A A A A
- hex() - 将进制转换为十六进制
- oct() - 讲进制转换为八进制
print(hex(65))
print(oct(65))
0x41
0o101
字符串的下标和切片
str1 = '''
从前有座山
山上有座庙
庙里有个老和尚
老和尚对小和尚说
'''
下标
获取第一个“山”,下标为5,换行相当于一个’\n‘
print(str1[5])
山
"说"的下标
print(str1[-2])
说
**注意:**一个回车键相当于一个’\n’,长度为1
切片
1.将“从前有座山”取出
print(str1[1: 6])
从前有座山
2.将“庙有老”
print(str1[13:18:2])
庙有老
3.将“庙座有上山”
print(str1[-19: -24: -1])
庙座有上山
补充
一行完整的内容如何换行?
num = 1 + 2 + \
3 + 4 + 5 + 6 + 7 + 8 \
+ 1 + 2 + 3 + \
4 + 5 + 6 + \
7 \
+ \
82 \
+ 10
print(num)
str2 = '3245678' \
'9087654'
print(str2)
156
32456789087654
字符串的遍历
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:
print(chr(ord(i)-32))
str3 += chr(ord(i)-32)
print(str3)
ABCDERF
2.‘abcdABDCD一二三四’—>‘ABCDabcd一二三四’
str4 = 'abcdABDCD一二三四'
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)
ABCDabdcd一二三四
字符串的方法和函数
1.split()
切割,以指定符号为切割点,将切割点左右的字符串分开并且保存到列表中
print('abcAKAUHFAskfnalnla/s'.upper())
ABCAKAUHFASKFNALNLA/S
2.lower()
大写字母转小写字母
print('abcAKAUHFAskfnalnla/s'.lower())
abcakauhfaskfnalnla/s
3.capitalize()
将字符串中首字母大写,必须以字母开头的字符串
print('abc123D456;.b'.capitalize())
Abc123d456;.b
5.split()
切割,以指定符号为切割点,将切割点左右的字符串分开并且保存到列表中
result1 = '1, 2, 3'.split(',')
print(result1)
print('3' + '' == '3')
Abc123D456;.B
6.split()
切割,以指定符号为切割点,将切割点左右的字符串分开并且保存到列表中
result1 = '1, 2, 3'.split(',')
print(result1)
print('3' + '' == '3')
[‘1’, ’ 2’, ’ 3’]
True
7.join()
将一个所有元素均为字符串的序列(容器)中的所有元素以指定符号拼接起来
result2 = ','.join(result1)
print(result2)
1, 2, 3
8.strip()
默认去掉字符串头尾的空符号(空格、\n、\t等都是空符号),也可以指定去除的符号
str1 = '\nabc \t\n'
print('-' * 20)
print(str1)
print('-' * 20)
print(str1.strip())
print('-' * 20)
print(str1.strip('\n'))
print('-' * 20)
print('abc--'.strip('.'))
9.replace()
替换
- replace(‘old_str’,‘new_str’) — 将一个字符串中的全部old_str替换成new_str
- replace(‘old_str’,‘new_str’,‘次数’) — 将一个字符串中指定数量的old_str替换成new_str
str1 = ',1, 2, 3,'
print(str1.replace(',', ' '))
print(str1.replace(',', ' ', 2))
1 2 3
1 2, 3,
应用
“你可真是个垃圾”
–主、谓、宾
–Python中有一个模块jieba
[‘你’, ‘可’, ‘真是’, ‘个’, ‘垃圾’]
–现存一个词库(停用词):
[‘垃圾’, ‘菜鸡’, ‘辣鸡’]
–如果jieba分词后的结果在停用词库中出现过,直接进行替换
str1 = "你可真是个垃圾"
stop_words = ['垃圾', '菜鸡', '辣鸡']
str2 = ''
list1 = ['你', '可', '真是', '个', '垃圾']
for i in list1:
if i in stop_words:
str2 += str1.replace(i, '*'*len(i))
print(str2)
你可真是个**