Python 字符类型
一、字符串
定义:a = 'Python' a = '123' a = "Python" a = """123""" a = '''Python'''
单引、双引和三引对字符串来说并无区别。其中含特殊意义的并未做转换,如果需要将引号中数据正常输出直接在前边加r
如下:
print("a\nb") 输出:a 和 b(注意:此处是换行了的)
print(r"a\nb") 输出:a\nb (注意:r表示不进行转义)
print('i'm Python') 报错.原因:程序走到第二个'就当结束了。m会当成变量,但是这里并非变量,所以报错。正确写法如下:
print("i'm Python") 只要含字母的都需要加引号。否则会报错。
字符串内置方法
#定义变量
msg = "i'm YHL"
capitalize() 注解:首字母大写. 如:已经大写还是大写 其他大写变成小写
print (msg.capitalize())
输出:I'm yhl
lower() 注解:将大写字母转成小写
print(msg.lower())
输出:i'm yhl
upper() 注解:将所有小写转成大写
print(msg.upper())
输出:I'M YHL
center(长度,填充的值) 注解:定义长度.让其变量中字符串剧中显示
print (msg.center(20))
输出: i'm YHL :
print (msg.center(20,"*"))
输出:******i'm YHL*******
count("值") 注解:统计某一字符串出现的次数
print (msg.count("Y"))
输出:1
print (msg.count("Y",0,3))
输出:0 PS:从下标开始找. 下标0-3之间找Y出现过几次. 注意:顾头不顾尾.这里是0-3实际是0-2
print (msg.count("Y",0,-1))
输出:0 PS:从下标开始找. 下标0--1之间找Y出现过几次. 注意:此处的-1表示最后
print (msg.count("Y",3))
输出:1 PS:从下标开始找. 下标3之后开始找Y出现过几次.
endswith("值") 注解:判断以什么结尾.真返回True 否则返回Fales
print (msg.endswith("d"))
输出:False PS:意思是以什么结尾.如果是返回True 否则返回False
=====================================================================================================================
#定义变量 PS:变量中的\t表示空格.默认是一个tab键
msg1 = "a\tb"
xpandtabs() 注解:设置空格大小.默认是八个空格.意思就是说括号中不写数字
print(msg1.expandtabs(10))
输出:设置a and b之间的空格大小.
find("值") 注解:查找字符下标或坐标.注意:\t默认占1位.键盘上空格敲1下占1位.敲2下占2位.以此类推.一个tab键就占1位
print(msg1.find("b"))
输出:2 PS:空格也算. 注意:如果找不到会返回-1
print(msg1.find("b",0,8))
输出:2 PS:如果字符串中出现多个只回显第一个的下标.还有就是这样写是规定一个范围
format("值","值") 注解:格式化字符串
print("{0}{1}{0}".format("name","age"))
输出:nameagename ps:{0}-name{1}-age{0}-name 注意:相当于是下标一一对应
print("{name}".format(name="YHL"))
输出:YHL ps:相当于打印变量name对应的值.
print("{}{}{}".format("name","age","YHL"))
输出:nameageYHL ps:前边中括号有几个后台值就必须有几个.否则会报错. 注意括号不能多.值可以多
index("值") 注解:查找索引
print(msg1.index("a"))
输出:1 PS:如果一个变量中出现多个相同的字母.那么也只返回第一个
PS:find 和 index 都是查找下标.
两个的区别在于:
find:是不知道有没有.是去找. 如果有正常返回.如果没有返回-1
index:是知道有.通过已知的去找对应的下标. 如果有正常返回.如果没有直接报错
=====================================================================================================================
#定义变量
msg2 = "a123"
isalnum() 注解:判断变量是否由数字和字母组成.是返回True.否则返回False 纯数字和纯字母都可以.不能是数字和字母之外的
print(msg2.isalnum())
输出:True
isalpha() 注解:是字母返回True 否则返回False. 必须全是字母
print(msg2.isalpha())
输出:False
=====================================================================================================================
#定义变量
msg3 = "10"
isdecilmal() 注解:判断是否是十进制数. 是返回True 否则返回False 注意:只能是数字.
print(msg3.isdecimal())
输出:True PS:如果是10.2则会报错.
isdigit() 注解:判断是不是整型 注意:只能整数.
print(msg3.isdigit())
输出:True
=====================================================================================================================
#定义变量
msg4 = "if"
isidentifier() 注解:判断字符串中是否存在关键字. 是返回True 否则返回False
print(msg4.isidentifier())
输出:True PS:如果是ifa的话就直接返回True 一定要清楚是关键字.(包含)
islower() 注解:判断字符串是否为小写. 是返回True 否则返回False
print(msg4.islower())
输出:True PS:必须全都是小写. 否则返回False
isupper() 注解:判断字符串是否为大写. 是返回True 否则返回False
print(msg4.isupper())
输出:False PS:必须全都是大写. 否则返回False
=====================================================================================================================
#定义变量
msg5 = " "
isspace() 注解:判断是否为空格.是空格返回True 否则返回False. 注意:\t也是空格. tab \n 敲键盘空格一样
print(msg5.isspace())
输出:True PS:不能有其他的.必须全是空格
=====================================================================================================================
#定义变量
msg6 = "Hello Word"
istitle() 注解:判断抬头. 就是首字母是不是大写.是就返回True. 否则返回False.
print(msg6.istitle())
输出:True PS:是单词的首字母.如果单词中还有别的是大写也是False
=====================================================================================================================
#定义变量
msg7 = "Yhl"
ljust(值,"*") 注解:左对齐.
print(msg7.ljust(10,"*"))
输出:Yhl******* PS:左对齐,缺少的部分用*填充.长度是10
print(msg7.ljust(10))
输出:Yhl PS:左对齐,缺少的部分用空格填充.长度是10
ljust(值,"*") 注解:右对齐.
print(msg7.rjust(10,"*"))
输出:*******Yhl PS:右对齐,缺少的部分用*填充.长度是10
print(msg7.rjust(10))
输出: Yhl PS:右对齐,缺少的部分用空格填充.长度是10
=====================================================================================================================
#定义变量
msg8 = " abcd "
strip() 注解:去掉空格(前后都去). 如果:" SA SAS"那么中间的空格无法去除
print(msg8.strip())
输出:abcd
lstrip() 注解:只去掉左边的空格.右边的不去掉
print(msg8.lstrip())
输出:abcd "
rstrip() 注解:只去掉右边的空格.左边的不去掉
print(msg8.rstrip())
输出: abcd
maketrans("值","值") 注解:制作翻译表.下边是用法. 长度必须是一一对应否则会报错.
msg9 = "my name is abcd"
table = str.maketrans("a","2")
print(msg9.translate(table))
输出:my n2me is 2bcd
=====================================================================================================================
#定义变量
msg10 = "abcdefg"
zfill(10) 注解:右对齐.左边不够的用0填充
print(msg10.zfill(10))
输出:000abcdefg
python 字符串相关方法
字符串常用操作
1.移除空白
msg01 = " dsadasi21 \n "
print(msg01.strip())
输出:dsadasi21
2.分割
msg02 = "www.baidu.com"
print(msg02.split("i"))
输出:['www.ba', 'du.com'] PS:以i为点进行分割.
print(msg02.split(".",1))
输出:['www', 'baidu.com'] PS:以.进行分割1次.
print(msg02.split(".",2))
输出:['www', 'baidu', 'com'] PS:以.进行分割2次. 注意:如果.在字符串中不够分的次数.那么不会报错.按最多分
print(msg02.split(".")[0])
输出:www PS:以.进行分割.并打印出下标为0的数据
print(msg02.split(".")[-1])
输出:com PS:以.进行分割.并打印出最后一个数据
print(msg02.split(".")[0:2])
输出:['www', 'baidu'] PS:以.进行分割.并打印出下标是0,1的数据
3.长度
msg03 = "www.baidu.com"
print(len(msg02))
输出:13 PS:计算字符串长度
4.索引(和切片很像)
msg04="welcometobeijingYhl"
print(msg04[2])
输出:l PS:通过索引获取字符串中对应的值
print(msg04.index("o"))
输出:4 PS:通过字符串中的值找对应的下标(索引)
5.切片
msg04="welcometobeijingYhl"
print(msg04[0:3])
输出:wel
print(msg04[0:])
输出:welcometobeijingYhl
print(msg04[0:-1])
输出:welcometobeijingYh
print(msg04[:])
输出:welcometobeijingYhl
print(msg04[2])
输出:l PS:通过索引取对应的值
print(msg04[2:7:2])
输出:loe PS:步长. 各几个取几次.
转义字符
下表是一个逃跑或反斜线符号可以代表的非打印字符的清单。
注:在doublequoted字符串,转义字符被解释;在singlequoted字符串,转义字符被保留。
反斜线 符号
十六进制字符
描述
\a
0x07
Bell or alert
\b
0x08
Backspace
\cx
Control-x
\C-x
Control-x
\e
0x1b
Escape
\f
0x0c
Formfeed
\M-\C-x
Meta-Control-x
\n
0x0a
Newline
\nnn
Octal notation, where n is in the range 0.7
\r
0x0d
Carriage return
\s
0x20
Space
\t
0x09
Tab
\v
0x0b
Vertical tab
\x
Character x
\xnn
Hexadecimal notation, where n is in the range 0.9, a.f, or A.F
字符串运算符
假设A持有'hello'和变量b拥有'Python'的字符串变量:
操作符
描述
例子
+
串联 - 添加操作两边的值
a + b 将得到 HelloPython
*
重复 - 创建新的字符串,相同的字符串连接的多个副本
a*2 将得到 -HelloHello
[]
切片 - 从给定的索引字符
a[1] will give e
[:]
范围切片 - 从给定范围内的字符
a[1:4] will give ell
in
成员关系 - 返回true,如果存在一个字符在给定的字符串
H in a will give 1
not in
成员关系 - 返回true,如果不存在一个字符在给定的字符串
M not in a will give 1
r/R
原始字符串 - 禁止转义字符的实际意义。必须放在紧接第一个引号。正常输出
print r'\n'
prints \n
print R'\n'
prints \n
%
格式化 - 执行字符串格式
See at next section
万恶的字符串拼接:
pythom中的字符串在C语言中体现为师一个字符数组,每次创建字符串的时候需要在内存中开辟一块连续的空间,并且一旦修改字符串的话,就需要在次开辟一块新的连续空间,万恶的加号(+)每出现一次,就会在内存中重新开辟一块新的空间。
下面是一套完整的符号可用%的列表:
符号
转换含义
符号
转换含义
%c
character
%X
hexadecimal integer (UPPERcase letters)
%s
string conversion via str() prior to formatting
%e
exponential notation (with lowercase 'e')
%i
signed decimal integer
%E
exponential notation (with UPPERcase 'E')
%d
signed decimal integer
%f
floating point real number
%u
unsigned decimal integer
%g
the shorter of %f and %e
%o
octal integer
%G
the shorter of %f and %E
%x
hexadecimal integer (lowercase letters)
其他支持的符号和功能下表中列出:
符号
功能
*
argument specifies width or precision
-
left justification
+
display the sign
leave a blank space before a positive number
#
add the octal leading zero ( '0' ) or hexadecimal leading '0x' or '0X', depending on whether 'x' or 'X' were used.
0
pad from left with zeros (instead of spaces)
%
'%%' leaves you with a single literal '%'
(var)
mapping variable (dictionary arguments)
m.n.
m is the minimum total width and n is the number of digits to display after the decimal point (if appl.)