昨天我们学习了python中的函数,如何定义函数,如何调用函数,函数中参数的作用域等
五分钟看懂python函数(同Java方法作比较)_ypxcan的博客-CSDN博客
今天,我们继续来学习python中的字符串,一举拿下python字符串的使用
我们先来看一下python中怎么定义字符串
str1 = 'this is str1'
str2 = '123'
和Java中的字符串作比较,发现好像也没有什么不同,唯一不同的是上面定义的字符串用单引号,而java中必须使用双引号,事实上,在python中,字符串既可以用单引号也可以用双引号来包围。
既然我们知道了字符串怎么定义,那么我们要解决的第一个问题就是转义问题
我们可以在字符串中使用\
(反斜杠)来表示转义,也就是说\
后面的字符不再是它原来的意义,例如:\n
不是代表反斜杠和字符n,而是表示换行;而\t
也不是代表反斜杠和字符t,而是表示制表符。所以如果想在字符串中表示'
要写成\'
,同理想表示\
要写成\\
。
如果我们想要输出 'hello,world!' 这个字符串,我们应该怎么做?
我们来设计一段代码:
if __name__ == '__main__':
s1 = '\'hello, world!\''
print(s1)
没错,就是这样,我们必须要用\来对'进行转义
控制台输出一下:
输出成功!
在\
后面还可以跟一个八进制或者十六进制数来表示字符,例如\141
和\x61
都代表小写字母a
,前者是八进制的表示法,后者是十六进制的表示法。
我们再来看这段代码
if __name__ == '__main__':
s1 = '\141\142\143\x61\x62\x63'
print(s1)
控制台输出一下:
为什么\141代表小写字母a呢?
因为\141在\后面跟的是八进制
141 = 1 + 4*8 + 1*8*8 = 97
而在ASCII码中,97就是小写字母a
如果我们不希望字符串中的\
表示转义,我们可以通过在字符串的最前面加上字母r
来加以说明
来看下面这段代码:
if __name__ == '__main__':
s1 = r'\'hello, world!\''
s2 = r'\n\\hello, world!\\\n'
print(s1)
print(s2)
控制台输出一下
可以看到\没有对后面的字符进行转义
到这里我们已经解决了第一个问题,那就是字符串的转义问题,接下来我们来讲几个有用的功能
第一个就是字符串的拼接,我们可以用 + 运算符来实现字符串的拼接
看这段代码:
if __name__ == '__main__':
s1 = 'hello'
s2 = 'world'
s1 += s2
s3 = 'hello' + 'java'
print(s1)
print(s3)
控制台输出一下:
第二个就是使用*
运算符来重复一个字符串的内容
我们来看代码:
if __name__ == '__main__':
s1 = 'hello'
print(s1 * 3)
控制台输出:
这个是java中没有的功能,有点意思
第三个就是可以使用in
和not in
来判断一个字符串是否包含另外一个字符串(成员运算)
看代码:
if __name__ == '__main__':
s1 = 'hello,world!'
print('ll' in s1)
print('java' in s1)
控制台输出:
第四个就是用[]
和[:]
运算符从字符串取出某个字符或某些字符(切片运算)
看代码:
if __name__ == '__main__':
str2 = 'abc123456'
# 从字符串中取出指定位置的字符(下标运算)
print(str2[2]) # c
# 字符串切片(从指定的开始索引到指定的结束索引)
print(str2[2:5]) # c12
print(str2[2:]) # c123456
print(str2[2::2]) # c246
print(str2[::2]) # ac246
print(str2[::-1]) # 654321cba
print(str2[-3:-1]) # 45
控制台输出:
关于切片,我们要知道这是左闭右开的区间,也就是说取不到最右边的值
切片的内容我会单独再写一篇文章来讲,这里就不多说了
好了,讲完上面这四个功能,我们就开始讲今天的大头了,也就是字符串的内置函数
这里我先列出来常用的字符串的内置函数
方法 | 描述 |
---|---|
把字符串的第一个字符大写 | |
返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数 | |
检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False. | |
检测 str 是否包含在 string 中,如果 beg 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-1 | |
格式化字符串 | |
跟find()方法一样,只不过如果str不在 string中会报一个异常. | |
如果 string 至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False | |
如果 string 至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False | |
如果 string 只包含数字则返回 True 否则返回 False. | |
如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False | |
如果 string 中只包含数字字符,则返回 True,否则返回 False | |
如果 string 中只包含空格,则返回 True,否则返回 False. | |
如果 string 是标题化的(见 title())则返回 True,否则返回 False | |
如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False | |
以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串 | |
返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串 | |
转换 string 中所有大写字符为小写. | |
截掉 string 左边的空格 | |
maketrans() 方法用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。 | |
返回字符串 str 中最大的字母。 | |
返回字符串 str 中最小的字母。 | |
有点像 find()和 split()的结合体,从 str 出现的第一个位置起,把 字 符 串 string 分 成 一 个 3 元 素 的 元 组 (string_pre_str,str,string_post_str),如果 string 中不包含str 则 string_pre_str == string. | |
把 string 中的 str1 替换成 str2,如果 num 指定,则替换不超过 num 次. | |
以 str 为分隔符切片 string,如果 num 有指定值,则仅分隔 num+1 个子字符串 | |
检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查. | |
翻转 string 中的大小写 | |
返回"标题化"的 string,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle()) | |
转换 string 中的小写字母为大写 | |
返回长度为 width 的字符串,原字符串 string 右对齐,前面填充0 |
看代码:
str1 = 'hello, world!'
# 通过内置函数len计算字符串的长度
print(len(str1)) # 13
# 获得字符串首字母大写的拷贝
print(str1.capitalize()) # Hello, world!
# 获得字符串每个单词首字母大写的拷贝
print(str1.title()) # Hello, World!
# 获得字符串变大写后的拷贝
print(str1.upper()) # HELLO, WORLD!
# 从字符串中查找子串所在位置
print(str1.find('or')) # 8
print(str1.find('shit')) # -1
# 与find类似但找不到子串时会引发异常
# print(str1.index('or'))
# print(str1.index('shit'))
# 检查字符串是否以指定的字符串开头
print(str1.startswith('He')) # False
print(str1.startswith('hel')) # True
# 检查字符串是否以指定的字符串结尾
print(str1.endswith('!')) # True
# 将字符串以指定的宽度居中并在两侧填充指定的字符
print(str1.center(50, '*'))
# 将字符串以指定的宽度靠右放置左侧填充指定的字符
print(str1.rjust(50, ' '))
str2 = 'abc123456'
# 检查字符串是否由数字构成
print(str2.isdigit()) # False
# 检查字符串是否以字母构成
print(str2.isalpha()) # False
# 检查字符串是否以数字和字母构成
print(str2.isalnum()) # True
str3 = ' jackfrued@126.com '
print(str3)
# 获得字符串修剪左右两侧空格之后的拷贝
print(str3.strip())
学会上面的方法,那么python字符串就掌握了七七八八了,最重要的是记下来,不要每次用到再翻百度之类的,这样子就会很浪费时间,OK,散会!