五分钟学会python字符串

昨天我们学习了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中没有的功能,有点意思

第三个就是可以使用innot 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

控制台输出:

关于切片,我们要知道这是左闭右开的区间,也就是说取不到最右边的值

切片的内容我会单独再写一篇文章来讲,这里就不多说了

好了,讲完上面这四个功能,我们就开始讲今天的大头了,也就是字符串的内置函数

这里我先列出来常用的字符串的内置函数 

方法描述

string.capitalize()

把字符串的第一个字符大写

string.count(str, beg=0, end=len(string))

返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数

string.endswith(obj, beg=0, end=len(string))

检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False.

string.find(str, beg=0, end=len(string))

检测 str 是否包含在 string 中,如果 beg 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-1

string.format()

格式化字符串

string.index(str, beg=0, end=len(string))

跟find()方法一样,只不过如果str不在 string中会报一个异常.

string.isalnum()

如果 string 至少有一个字符并且所有字符都是字母或数字则返

回 True,否则返回 False

string.isalpha()

如果 string 至少有一个字符并且所有字符都是字母则返回 True,

否则返回 False

string.isdigit()

如果 string 只包含数字则返回 True 否则返回 False.

string.islower()

如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False

string.isnumeric()

如果 string 中只包含数字字符,则返回 True,否则返回 False

string.isspace()

如果 string 中只包含空格,则返回 True,否则返回 False.

string.istitle()

如果 string 是标题化的(见 title())则返回 True,否则返回 False

string.isupper()

如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False

string.join(seq)

以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串

string.ljust(width)

返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串

string.lower()

转换 string 中所有大写字符为小写.

string.lstrip()

截掉 string 左边的空格

string.maketrans(intab, outtab])

maketrans() 方法用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。

max(str)

返回字符串 str 中最大的字母。

min(str)

返回字符串 str 中最小的字母。

string.partition(str)

有点像 find()和 split()的结合体,从 str 出现的第一个位置起,把 字 符 串 string 分 成 一 个 3 元 素 的 元 组 (string_pre_str,str,string_post_str),如果 string 中不包含str 则 string_pre_str == string.

string.replace(str1, str2,  num=string.count(str1))

把 string 中的 str1 替换成 str2,如果 num 指定,则替换不超过 num 次.

string.split(str="", num=string.count(str))

以 str 为分隔符切片 string,如果 num 有指定值,则仅分隔 num+1 个子字符串

string.startswith(obj, beg=0,end=len(string))

检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查.

string.swapcase()

翻转 string 中的大小写

string.title()

返回"标题化"的 string,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle())

string.upper()

转换 string 中的小写字母为大写

string.zfill(width)

返回长度为 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,散会!

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

再让我学一会吧!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值