字符串
参考视频链接: 【字符串】聪明办法学Python第二版_哔哩哔哩_bilibili
用两种不同的引号是为了表达一些 在引号里面要用到引号的情况!
字符串中的转义字符
前面有反斜杠 \
的字符,叫做转义字符(只能作为一个字符)
print("双引号:\"")
双引号:"
print("反斜线:\\")
反斜线:\
print("换\n行")
换
行
# 等效于一个Tab键↓
print("这个是\t制\t表\t符\n也叫\t跳\t格\t键")
这个是 制 表 符
也叫 跳 格 键
s = "D\\a\"t\ta"
print("s =", s)
print("s 的长度为:", len(s))
s = D\a"t a
s 的长度为: 7
repr()
函数
#现在有两个字符串
s1 = "Data\tWhale"
s2 = "Data Whale"
#它俩看起来似乎是一样的
print("s1:", s1)
print("s2:", s2)
s1: Data Whale
s2: Data Whale
#但事实上两个不一样
s1 == s2
False
repr()
函数可以直接看出python中字符串的内部结构,防止一些隐藏的程序进行执行
print(repr(s1))
print(repr(s2))
'Data\tWhale'
'Data Whale'
一些字符常量
import string
print(string.ascii_letters) # 打印ASCII码
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
print(string.ascii_lowercase) #单独打印小写
abcdefghijklmnopqrstuvwxyz
print(string.ascii_uppercase) #单独打印大写
ABCDEFGHIJKLMNOPQRSTUVWXYZ
print(string.digits) # 打印数字类型
0123456789
print(string.punctuation) # 打印python支持输出的所有特殊符号
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
print(string.printable) # 打印python支持输出的字符
0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
print(string.whitespace) # 打印空白字符
可以用上面的repr()
函数来看空白字符的本质
print(repr(string.whitespace))
' \t\n\r\x0b\x0c'
一些字符串的运算
字符串的加乘,且字符串只能和字符串做加乘运算
print("abc" + "def")
print("abc" * 3)
abcdef
abcabcabc
in
运算
可用于查看前面字符串是否在后面的字符串中
print("ring" in "strings") # True
print("wow" in "amazing!") # False
print("Yes" in "yes!") # False
print("" in "No way!") # True
print("聪明" in "聪明办法学 Python") # True
字符串索引和切片
索引:可以让我们在特定位置找到一个字符
s = "Datawhale" # 赋值给s
print(s[0])
print(s[1])
print(s[2])
print(s[3])
D
a
t
a
len(s)
9
print(s[len(s)-1]) # 最后一位了,因为从0开始的
e
print(s[len(s)]) # 越界报错
print(s[-5]) # 负数索引,字符串从右到左是从-1开始的
print(s[-4])
print(s[-3])
print(s[-2])
print(s[-1]) # 倒数第一个
w
h
a
l
e
切片:获取字符串的一部分,左边不写东西默认从0开始,右边不写东西默认执行到-1结束
s = "Datawhale"
print(s[0:4]) # 左闭右开,第五个取不到
print(s[4:9])
print(s[0:2])
print(s[2:4])
print(s[5:7])
print(s[7:9])
Data
whale
Da
ta
ha
le
print(s[:4])
print(s[4:])
print(s[:])
Data
whale
Datawhale
步长: step
print(s[:9:3]) # 经过3的长度取一次,这里默认0时取第一次
print(s[1:4:2])
Daa
aa
翻转字符串
s = "Datawhale"
print(s[::-1]) # 步长为负数就从右往左切片
elahwataD
print("".join(reversed(s))) #join()可以把一个序列依次添加到字符串内
elahwataD
def reverseString(s):
return s[::-1]
print(reverseString(s))
elahwataD
字符串的循环
用索引的for循环
s = "Data"
for i in range(len(s)):
print(i, s[i])
0 D
1 a
2 t
3 a
也可以不用索引,用 in
运算
for c in s: # 依次取出
print(c)
D
a
t
a
也可以使用 enumerate()
获得元素的序号
for i, c in enumerate(s):
print(i, c)
0 D
1 a
2 t
3 a
zip(a, b)
可以在一次循环中,分别从 a
和 b
里同时取出一个元素,也可以采用enumerate()
来分别获取俩个的序号
for i, (a, b) in enumerate(zip(s, reverseString(s))): #翻转后的字符串
print(i, a, b) #分别取出一个赋给a,b
0 D e
1 a l
2 t a
3 a h
4 w w
5 h a
6 a t
7 l a
8 e D
一些跟字符串相关的内置函数
str():
将另外一个数据类型转换为字符串类型
len():
输出一段字符串的长度
name = input("输入你的名字: ")
print("Hi, " + name + ", 你的名字有 " + str(len(name)) + " 个字!")
# 如果把str去掉就会报错,因为字符串才能被打印
输入你的名字: Datawhale
Hi, Datawhale, 你的名字有 9 个字!
chr():
输出ASCII码对应的那个字符
ord():
输出对应的ASCII码
两者是相反的用途
print(ord("A"))
65
print(chr(65))
A
print(chr(ord("A") + ord(" "))) # A的ASCII码是65,空格的ASCII码是32
a
lower()
和upper()
:大小写转换
print("YYDS YYSY XSWL DDDD".lower())
print("fbi! open the door!!!".upper())
yyds yysy xswl dddd
FBI! OPEN THE DOOR!!!
strip()
:可以将字符串首尾的空格删除
replace()
:replace(A,B)
将一个字符串中的子字符串A用B替换
print("聪明办法学 Python".replace("Python", "C"))
print("Hugging LLM, Hugging Future LLM".replace("LLM", "SD", 1))
# count = 1 (只换一次,后面如果还有则不会换了),如果后面没有参数,默认是全换
聪明办法学 C
Hugging SD, Hugging Future LLM
用这个方法还可以把某些字符串删除,(相当于替换为了None)
count():
输出一个字符串出现的次数
print("This is a history test".count("is"))
print("This IS a history test".count("is")) # 大小写敏感
3
2
startwith():
检测该字符串是否是以某个字符串开头
endwith():
检测是否以这个字符串结尾
print("Dogs and cats!".startswith("Do"))
print("Dogs and cats!".startswith("Don't"))
True
False
print("Dogs and cats!".endswith("!"))
print("Dogs and cats!".endswith("rats!"))
True
False
find():
找到与子串在字符串内相对应的字符的起始位置
下面and起始位置是在序号为5的位置,返回5,如果找不到,则返回的值为-1
print("Dogs and cats!".find("and"))
print("Dogs and cats!".find("or"))
# 但是如果上面是s,s[-1]能找到,所以这里的-1仅仅表判断
5
-1
index():
和find():
用法一致,都是用于从列表中找出某个值第一个匹配项的索引位置
但是不同的是,index():
如果找不到则会错
用 f-string
格式化字符串
x = 42
y = 99
# 里面要用引号的话得是不同的引号
print(f'你知道 {x} + {y} 是 {x+y} 吗?')
你知道 42 + 99 是 141 吗?
其他格式化字符串的方法
如果要格式化字符串的话,f-string 是个很棒的方法,Python 还有其他方法去格式化字符串:
%
操作format()
方法
参考资料:
- Class Notes: String Formatting - CMU 15-112
- [Python 字符串 - 菜鸟教程](https://www.runoob.com/python3/python3-string.html#:~:text=\n \n-,Python 字符串格式化,-Python 支持格式化)
- Python format 格式化函数 - 菜鸟教程
字符串是不可变的,只能替换后赋值
s = "Datawhale"
s[3] = "e" # Datewhale,常量不能直接赋值(list能,但字符串不行),报错!!!
s = s[:3] + "e" + s[4:] # 把s拆分然后重新赋值给s
print(s)
Datewhale
基础文件操作 Filing
Open()
函数
用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数。
文件不存在则会自动创建文件
open(file, mode)
函数主要有 file
和 mode
两个参数,其中 file
为需要读写文件的路径。mode
为读取文件时的模式,常用的模式有以下几个:
r
:以字符串的形式读取文件。rb
:以二进制的形式读取文件。『readbit』w
:写入文件。『清空所有内容重新写入』a
:追加写入文件。『在指定行数插入内容(看光标指向)一般为末尾』
文件对象
open
函数会返回一个文件对象,在文件操作前,首先要了解文件对象提供了哪些常用的方法:
close()
: 注意每次操作结束后,及时通过 close()
方法关闭文件
- 在r 与rb模式下:
read()
: 读取整个文件readline()
: 读取文件的一行readlines()
: 读取文件的所有行
- 在 w与a模式下:
write()
:writelines()
:
## 以 w 模式打开文件chap6_demo.txt
file = open('chap6_demo.txt', 'w')
## 创建需要写入的字符串变量 在字符串中 \n 代表换行(也就是回车)
content = 'Data\nwhale\n'
## 写入到 chap6_demo.txt 文件中
file.write(content)
## 关闭文件对象
file.close()
w 模式会覆盖之前的文件,如果你想在文件后面追加内容,可以使用 a 模式操作。
标签:文件,string,Python,print,字符串,Data,Strings From: https://www.cnblogs.com/qiao-JF/p/17872133.html