Python自学笔记——Day5
字符串介绍
1. 什么是字符串
-
表示或记录文本信息的一种形式
-
字符串排列有序,序列对于字符串来说十分重要
-
在非注释语句中,所有被引号括起来的部分都可以认为是字符串
-
引号类型
-
单引号:' '
-
双引号:" "
-
三引号:""" """ 或者 ''' '''
-
# 字符串练习
a = '我爱北京天安门'
b = "我爱北京天安门"
c = """我爱北京天安门"""
d = '''我爱北京天安门'''
print(a, b, c, d)
-
四种引号的区别
-
单引号、双引号被认为是没有区别
-
三单引号、三双引号被认为是没有区别
-
但三引号通常用来表示多行字符串信息,或者在程序函数内部函数体的开头表示函数说明
-
# 三引号练习
a = '''我有一所房子
面朝大海
春暖花开'''
print(a, end='')
小实验:字符串中出现引号。比如,想输出字符串Let's go!
# 字符串中的引号处理
a = "Let's go!"
print(a)
# 不使用双引号括住,则会造成 SyntaxError:invalid syntax 错误
-
转义字符
- 可以在字符串中使用
\
(反斜杠)来表示转义,也就是说\
后面的字符不再是它原来的意义 - 或者说在字符串中一些不太好表示的符号,比如换行、制表符等;连同一些需要特殊表示的符号,比如单引号;为了表示这些符号,需要一些特殊的形式,俗称转义
- 常用转义字符:
- 单引号:
\'
- 双引号:
\"
- 响铃:
\a
- 反斜杠:
\\
- 换行:
\n
- 水平制表符:
\t
- 垂直制表符:
\v
- 倒退:
\b
- 空字符串,字符值为0:
\0
- Unicode 16位的十六进制数值:
\uxxxx
(注意是四个数字) - Unicode 32位的十六进制数值:
\uxxxx xxxx
(注意是八个数字) - 十六进制值:
\xXX
(注意:第一个x是必须有的,后面的大X表示十六进制值) - 八进制值:
\oXX
- 单引号:
- 可以在字符串中使用
2. String类型的API
- API:(Application Programming Interface) 应用程序接口,是第三方已经写好、集成好的程序功能,我们需要做的仅仅是使用/调用,提高使用者的开发效率,减少开发时间
传说中的"不重复造轮子"思想
-
一般函数
- startswith | endswith
- 功能:判断字符串是不是以特定字符xx开头或结尾的
- count
- 功能:计算字符串中某个子字符串出现的次数
- find
- 功能:查找字符串中子字符串出现的位置
- 能查到,返回第一个内容的位置(下标从0开始)
- 未查到则返回-1
- startswith | endswith
# 判断字符串是不是以指定字符开头或结尾
s = "I love China and Inner Mongolia, and you?"
print(s.startswith("I"))
print(s.endswith("?"))
# count举例
s = "I love China and Inner Mongolia, and you?"
print(s.count("love"))
# find举例
s = "I love China and Inner Mongolia, and you?"
print(s.find("love"))
通过 help(str) 指令可以查Python的手册
- 判断字符串:起一定判断功能的字符串
- islower | isupper
- 判断字符串是小写字母还是大写字母,注意只有全部小写或者全部大写才返回True
- isdigit
- 判断字符串是不是全部由数字符号构成
- isalpha
- 判断字符串是否全部由字母组成(注意字符串中包含的空格和其他符号不算字母)
- 狭义的讲,alpha指包含26个英文字母的大小写
- islower | isupper
# islower/isupper示例
s = "My first name is Dior."
print(s.islower())
print(s.isupper())
# isdigit示例
s = "1234567890"
print(s.isdigit())
# isalpha示例
s = "abcde12345"
print(s.isalpha())
- 操作类函数
- lower | upper
- 把字符串中的字母转换为全部小写或大写
- strip | lstrip | rstrip
- 去掉字符串两边的空格、左边的空格、右边的空格
- swapcap
- 切换字符串中字母的大小写
- lower | upper
# lower/upper示例
s = " I love China and Inner Mongolia, 666 "
print(s.lower())
print(s.upper())
# strip|lstrip|rstrip示例
s = " I love China and Inner Mongolia, 666 "
print(s.strip())
print(s.lstrip())
print(s.rstrip())
# swapcase示例
s = "I love China and Inner Mongolia, 666"
print(s.swapcase())
- 字符串格式化:把字符串按照一定格式打印或填充
- 格式化的分类:
- 使用
%
进行格式化 - 使用format函数进行格式化
- 使用
- 格式化的分类:
# 字符串格式化例子
'''
%s 代表插入的是字符串
%d 代表插入的是整数
%.2f 代表插入保留两位小数的浮点数
'''
s = "My name is %s, my age is %d. I am %.2fcm, %dkg." % ('Wuxiaojun', 42, 175, 70)
print(s)
# 使用 % 格式化字符串
s = "My name is %s" % "Wuxiaojun"
# 或者
s = "My name is %s" % ("Wuxiaojun")
# 当只有一个需要替换的简单字符串时,可以省略括号
ss = "My age is %d" % 28
# %d 执行截尾取整操作,小数部分直接被去掉
# %f 指带入的数字是浮点数
# %.2f 保留两位小数的浮点数(超出两位执行截取操作,不足则用 0 填充)
注意:格式化字符串时,给出的数据数量必须和格式化的占位符数量一致,否则会报告TypeError错误。
另外,如果格式化字符串时未提供 % 后面的参数列表,那么不进行格式化,而是按照原有格式输出。
- 占位符举例:
-
%s
:字符串 -
%r
:字符串,但是是repr而不是str -
%c
:整数转换为单个字符 -
%d
:十进制整数 -
%u
:无符号整数 -
%o
:八进制整数 -
%x
:十六进制,字母表示为小写 -
%X
:十六进制,字母表示为大写 -
%e
:浮点数,e为小写,例如 2.87e+12 -
%E
:浮点数,E为大写。例如 2.87E+12 -
%f,%F
:浮点数十进制表示 -
%g,%G
:十进制形式浮点数或指数形式浮点数自动转换 - 格式字符前出现整数,表示此格式占位符所占的宽度
- 格式字符前面出现'-'表示左对齐
- 格式字符前面出现'+'表示右对齐
-
%0占位符
:位数不足用'0'补齐 - width表示宽度
- precision表示精度
-
# 占位符示例
s = "I am %10dcm tall" % 130
print(s)
s = "I am %-10dcm tall" % 130
print(s)
s = "I am %-20s" % "Wuxiaojun"
print(s)
s = "I am %020d" % 42
print(s)
s = "I am %7.4fkg" % 70.12 #整数部分占7位,小数部分4位(浮点数情况较为特殊)
print(s)
3. 布尔值
-
表示真假、是非的变量,取值True或False
-
在编程过程中,需要大量判断真假、是非、对错
# 数字比较
print(4 > 8)
# 字符串比较
print("haha" > "kiss")
# 结合条件判断语句
if (4 > 5):
print("yes")
else:
print("no")
如果布尔值作为数字参与运算,则所有非0的数字都是True;但是,反之如果True作为数字参与运算的时候,True表示值为1
# True作为数字参与运算
print(True * 3) # 打印结果不是三个True,而是3;注意与字符串的乘法运算相区别
print(False + 8) # 打印结果为8
# 布尔值参与运算
if 32: # 32这个数字非0,所以被认为是布尔值True
print("True")
4. None
- None是一个特殊的常量
- 不表示任何类型,通常用来占位;或者用来与变量解除绑定,None与其他类型进行比较永远返回False
- 注意正确书写None
# None的应用举例
a = 34
print(a)
a = None
print(a)
网友评论