+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2019-08(106)

2019-09(105)

2019-10(7)

2019-11(8)

2019-12(13)

2020-01(23)

2020-02(22)

Python3 - 字符串

发布于2020-01-01 13:44     阅读(197)     评论(0)     点赞(25)     收藏(1)


一个有序的字符的集合,用来存储和表现基于文本的信息,要求使用单引号或双引号括起来(即两边的引号能够配对)。

在 Python3 中有三种字符串的类型:
1.str,用于 Unicode 文本(ASCII或其它);
2.bytes,用于二进制数据,包含编码的文本;
3.bytearray,bytes的一种可变的变体。

字符串是一个有序的字符的集合,即有索引。

原始字符串
所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 原始字符串在字符串的第一个引号前加上字母 r(不区分大小写),与普通字符串有着几乎完全相同的语法。Unicode 字符串与 r 连用必需在 r 前面。

>>> str0 = 'Hello Python\t!'
>>> print(str0)
Hello Python    !
>>> str1 = r'Hello Python\t!'  # 直接打印输出,\t 无效。
>>> print(str1)
Hello Python\t!

转义字符,即(  )反斜杠

转义字符 描述
(在行尾时) 续行符
\ 反斜杠符号
' 单引号
" 双引号
\b 退格,Backspace
\000
\n 换行
\v 纵向制表符
\t 横向制表符
\r 回车,Enter
\f 换页
\oyy 八进制数,yy代表的是字符
\xyy 十六进制数,yy代表的是字符

字符串格式化
用 % 对字符串进行格式化输出。

格式化符号 描述
%c 格式化字符及其ASCII码
%s 格式化字符串
%d 格式化整数
%f 格式化浮点数字,可指定小数点后的精度。
... ...
>>> print('我叫%s,今年%d岁。'%('小明', 18))
我叫小明,今年18岁。

访问字符串中的字符
通过字符串的索引访问其中的字符,遵循顾首不顾尾的原则。

  • 正序索引访问,格式:[开始索引:结束索引:步长]
>>> str0 = 'Hello Python!'
>>> str0[0]  # 第一个字符
'H'
>>> str0[-1]  # 最后一个字符
'!'
>>> str0[1:5]  # 切片
'ello'
>>> str0[:]  # 不加索引默认取全部字符
'Hello Python!'
>>> str0[::3]  # 步长
'HlPh!'
  • 倒序索引访问,格式:[开始索引:结束索引:步长]
>>> str0 = 'Hello Python!'
>>> str0[::-1]  # 必须加 -1 ,字符串反转的一种方法。
'!nohtyP olleH'

字符串的内置方法

capitalize() 方法
在字符串中,如果第一个字符是字母则把第一个字母转成大写,其它字母转小写,如果第一个字符不是字母则把所有字母转成小写。

>>> str0 = ’hello PYTHON!‘
>>> str0.capitalize()
'Hello python!'
>>> str1 = ' hello PYTHON!'
>>> str1.capitalize()
' hello python!'

center(width, fillchar=' ') 方法
以指定的宽度居中字符串,如果指定宽度小于字符串宽度直接返回字符串,否则使用 fillchar 去填充,默认为空格。
参数:
width,字符串的总宽度。
fillchar,填充的字符,默认为空格。

>>> str0 = 'Hello Python!'
>>> str0.center(10, '*')  # 指定宽度小于字符串宽度直接返回字符串
'Hello Python!'
>>> str0.center(20, '*')
'***Hello Python!****'

ljust(width, fillchar=' ') 方法
以指定的宽度左对齐字符串,如果指定宽度小于字符串宽度直接返回字符串,否则使用 fillchar 去填充,默认为空格。
参数:
width,字符串的总宽度。
fillchar,填充的字符,默认为空格。

>>> str0 = 'Hello Python!'
>>> str0.ljust(10, '*')
'Hello Python!'
>>> str0.ljust(20, '*')
'Hello Python!*******'

rjust(width, fillchar=' ') 方法
以指定的宽度右对齐字符串,如果指定宽度小于字符串宽度直接返回字符串,否则使用 fillchar 去填充,默认为空格。
参数:
width,字符串的总宽度。
fillchar,填充的字符,默认为空格。

>>> str0.rjust(10, '*')
'Hello Python!'
>>> str0.rjust(20, '*')
'*******Hello Python!'

find(sub[, start[, end]]) 方法
从字符串的左边匹配指定的字符并返回其索引,否则返回 -1。如果有多个相同的字符只匹配第一个,其它的字符不在查找。
参数:
start:开始索引,默认是 0;
end:结束索引。

>>> str0 = 'Hello Python!'
>>> str0.find('o')  # 只查找匹配到的第一个字符
4
>>> str0.find('o', 8, 11)  # 指定索引范围
10
>>> str0.find('lo')  # 把 lo 当作一个整体,返回字符 l 的索引。
3
>>> str0.find('d')  # 未找到返回 -1
-1

rfind(sub[, start[, end]]) 方法
从字符串的右边匹配指定的字符并返回其索引,否则返回 -1。

index(sub[, start[, end]]) 方法
从字符串的左边匹配指定的字符并返回其索引,否则报错 ValueError。如果有多个相同的字符只匹配第一个,其它的字符不在查找。
参数:
start:开始索引,默认是 0;
end:结束索引。

>>> str0 = 'Hello Python!'
>>> str0.index('o')
4
>>> str0.index('o', 8, 11)
10
>>> str0.index('lo')
3
>>> str0.index('d')
Traceback (most recent call last):
  File "<pyshell#14>", line 1, in <module>
    str0.index('d')
ValueError: substring not found

rindex(sub[, start[, end]]) 方法
从字符串的右边匹配指定的字符并返回其索引,否则报错 ValueError。

format() 方法
格式化字符串,可以接收多个参数并且不要求位置顺序。

>>> '{} {} {}'.format('Hello', 'Python', '!')
'Hello Python !'
>>> '{0} {1} {2}'.format('Hello', 'Python', '!')
'Hello Python !'
>>> '我叫{name},{age}岁。'.format(name='小明', age=18)
'我叫小明,18岁。'

isalnum() 方法
检测字符串是否由字母和数字组成,返回 bool 值。

>>> str0 = 'Hello Python!'
>>> str0.isalnum()
False
>>> str1 = 'HelloPython2019'
>>> str1.isalnum()
True

isalpha() 方法
检测字符串是否只由字母组成,返回 bool 值。

>>> str0 = 'HelloPython'
>>> str0.isalpha()
True
>>> str1 = 'Hello Python!'
>>> str1.isalpha()
False

isdigit() 方法
检测字符串是否只由数字组成,返回 bool 值。

>>> str0 = '123456'
>>> str0.isdigit()
True
>>> str1 = 'Hello Python!'
>>> str1.isdigit()
False

isnumeric() 方法
检测字符串是否只由数字组成,这种方法是只适用于 Unicode 对象,在 Python3 中所有的字符串都是 Unicode 字符串。

>>> str0 = '123'
>>> str0.isnumeric()
True
>>> str1 = u'456'
>>> str1.isnumeric()
True
>>> str2 = 'Hello Python!'
>>> str2.isnumeric()
False

isdecimal() 方法
检查字符串是否只包含十进制字符,这种方法是只适用于 Unicode 对象。
注意:定义一个十进制字符串,只需要在字符串前添加 'u' 前缀即可。

>>> str0 = u'123'
>>> str0.isdecimal()
True
>>> str1 = 'Hello Python!'
>>> str1.isdecimal()
False

isidentifier() 方法
检测变量名、函数名、类名等标识符是否正确,返回 bool 。

>>> 'name'.isidentifier()
True
>>> '1name'.isidentifier()
False

isspace() 方法
检测字符串是否只由空白字符组成,返回 bool 。

>>> str0 = '    '
>>> str0.isspace()
True
>>> str1 = 'Hello Python!'
>>> str1.isspace()
False

strip() 方法
删除字符串左边和右边的指定字符,默认是空格,不能删除中间部分的字符。

>>> str0 = ' Hello Python!'
>>> str0.strip()  # 默认删除空格
'Hello Python!'
>>> str1 = '*Hello Python!*'
>>> str1.strip('*')  # 删除指定字符
'Hello Python!'

lstrip() 方法
删除字符串左边的指定字符,默认是空格,不能删除中间部分的字符。
rstrip() 方法
删除字符串右边的指定字符,默认是空格,不能删除中间部分的字符。

startswith(prefix[, start[, end]]) 方法
检查字符串是否以指定字符开头,返回 bool 值。

>>> str0 = 'Hello Python!'
>>> str0.startswith('H')
True
>>> str0.startswith('He', 0, 3)  # 切片
True

endswith(suffix[, start[, end]]) 方法
检查字符串是否以指定字符结尾,返回 bool 值。

encode() 方法
以指定的编码格式编码字符串,返回编码后的字符串,它是一个 bytes 对象。
参数:
encoding,编码,默认为 utf-8 。
errors,不同错误的处理方案,默认为 strict ,意为编码错误引起一个UnicodeError。 其它可能得值有 'ignore', 'replace', 'xmlcharrefreplace' 以及通过 codecs.register_error() 注册的任何值。

>>> str0 = '我是中国人'
>>> str0.encode(encoding='utf-8', errors='strict')  # utf-8 编码
b'\xe6\x88\x91\xe6\x98\xaf\xe4\xb8\xad\xe5\x9b\xbd\xe4\xba\xba'
>>> str0.encode(encoding='gbk', errors='strict')  # gbk 编码
b'\xce\xd2\xca\xc7\xd6\xd0\xb9\xfa\xc8\xcb'

decode() 方法
以指定的编码格式解码 bytes 对象,默认编码为 utf-8 。
参数:
encoding,编码,默认为 utf-8 。
errors,不同错误的处理方案,默认为 strict ,意为编码错误引起一个UnicodeError。 其它可能得值有 'ignore', 'replace', 'xmlcharrefreplace' 以及通过 codecs.register_error() 注册的任何值。

>>> str0 = '我是中国人'
>>> str_utf8 = str0.encode(encoding='utf-8', errors='strict')
>>> str_utf8
b'\xe6\x88\x91\xe6\x98\xaf\xe4\xb8\xad\xe5\x9b\xbd\xe4\xba\xba'
>>> str_utf8.decode(encoding='utf-8', errors='strict')
'我是中国人'

count(sub[, start[, end]]) 方法
统计字符串里某个字符出现的次数。

>>> str0 = 'Hello Python!'
>>> str0.count('o')
2
>>> str0.count('l', 1, 3)
1

lower() 方法
把字符串中的所有大写字母字符转小写。

>>> str0 = 'Hello PYTHON!'
>>> str0.lower()
'hello python!'

islower() 方法
检测字符串是否由小写字母组成,返回 bool 值。

>>> str0 = 'hellopython'
>>> str0.islower()
True
>>> str1 = 'Hello Python!'
>>> str1.islower()
False

title() 方法
把字符串中的每个单词的首字母小写转为大写。

>>> str0 = 'hello python!'
>>> str0.title()
'Hello Python!'

istitle() 方法
检测字符串中的每个单词的首字母是否为大写,且其它字母为小写,返回 bool 值。

>>> str0 = 'Hello Python!'
>>> str0.istitle()
True
>>> str1 = 'Hello python!'
>>> str1.istitle()
False

upper() 方法
把字符串中的所有小写字母字符转大写。

>>> str0 = 'Hello Python!'
>>> str0.upper()
'HELLO PYTHON!'

isupper() 方法
检测字符串是否由大写字母组成,返回 bool 值。

>>> str0 = 'HELLO PYTHON!'
>>> str0.isupper()
True
>>> str1 = 'Hello Python!'
>>> str1.isupper()
False

replace(old, new, count=-1) 方法
把字符中的指定字符替换成新的字符。
count,替换的次数,默认值 -1 ,全部替换。

>>> str0 = 'Hello Python!'
>>> str0.replace('!', '.')
'Hello Python.'
>>> str1 = 'aaabc'
>>> str1.replace('a', 'A', 2)  # 只替换 2 次
'AAabc'

translate() 方法
根据参数 table 给出的表(包含 256 个字符)转换字符串的字符,要过滤掉的字符放到 deletechars 参数中。

语法:

str.translate(table)
bytes.translate(table, delete=b'')
bytearray.translate(table, delete=b'')

参数:
table,翻译表,翻译表是通过 maketrans() 方法转换而来。
deletechars, 字符串中要过滤的字符列表。

maketrans() 方法
用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串表示需要转换的字符,第二个参数也是字符串表示转换的目标。两个字符串的长度必须相同。
注:Python3.4 已经没有 string.maketrans() 了,取而代之的是内建函数: bytearray.maketrans()、bytes.maketrans()、str.maketrans() 。

语法:

str.maketrans( in_table, out_table)

参数:
in_table,需要替换的字符串。
out_table,与 in_table 映射后的字符串。

>>> str0 = 'Hello Python!'
>>> in_table = 'eloptn'
>>> out_table = '123456'
>>> translate_table = str0.maketrans(in_table, out_table)
>>> str0.translate(translate_table)
'H1223 Py5h36!'

join() 方法
将序列中的元素以指定的字符连接生成一个新的字符串,重要用法即列表转字符串。

>>> list0 = ['P', 'y', 't', 'h', 'o', 'n']
>>> str0 = ''.join(list0)
>>> str0
'Python'
>>> list1 = ['P', 'y', 't', 'h', 'o', 'n']
>>> str1 = '-'.join(list1)  # 指定字符连接
>>> str1
'P-y-t-h-o-n'

split(sep=None, maxsplit=-1) 方法
通过指定分隔符对字符串进行切片,重要用法即 字符串转列表,分隔符不出现在结果中。
参数:
sep=None:分隔符,默认为所有的空字符,包括空格、\n、\t 等。
maxsplit=-1:分割的次数,-1,无限制

>>> str0 = 'Hello Python!'
>>> str0.split()  # 以空格为分隔符
['Hello', 'Python!']
>>> str0.split('o')  # 以字符 o 为分隔符
['Hell', ' Pyth', 'n!']  # 分隔符 o 不在列表中
>>> str0.split('o', 1)  # 以字符 o 为分隔符,分割 1 次。
['Hell', ' Python!']

swapcase() 方法
把字符串的字母进行大小写转换。

>>> str0 = 'hELLO pYTHON'
>>> str0.swapcase()
'Hello Python'

字符串的内置函数
len() 函数
返回字符串中字符的个数。

>>> str0 = 'Hello Python!'
>>> len(str0)
13

max() 函数
根据 ASCII 返回字符串中最大的字符。

>>> str0 = 'Hello Python!'
>>> max(str0)
'y'

min() 函数
根据 ASCII 返回字符串中最小的字符。

>>> str0 = 'Hello Python!'
>>> min(str0)
' '


所属网站分类: 技术文章 > python文章

作者:短发越来越短

链接: http://www.pythonheidong.com/blog/article/198842/

来源:python黑洞网 www.pythonheidong.com

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

25 0

赞一赞 or 踩一踩

收藏该文
已收藏

评论内容:(最多支持255个字符)

相似文章

  re学习笔记(42)安恒杯二月月赛-re- easy-py

  用Python3解决LeetCode买卖股票的最佳时机

  《Opencv计算机视觉实战》笔记_1:图像操作

  记录python之pyecharts安装

  使用python列表的pop方法求解约瑟夫环问题

  03.分支结构

  Python数据结构与算法(1)——引入

  【Django 003】创建多个应用拆分项目.

  python经典练习题十道(六)

  Numpy 的常用操作

优质资源排行榜

 python经典电子书大合集下载 下载次数 8139

 零基础java开发工程师视频教程全套,基础+进阶+项目实战(152G) 下载次数 7550

 零基础前端开发工程师视频教程全套,基础+进阶+项目实战(共120G) 下载次数 7442

 零基础大数据全套视频400G 下载次数 7006

 零基础php开发工程师视频教程全套,基础+进阶+项目实战(80G) 下载次数 6893

 零基础软件测试全套系统教程 下载次数 6506

 全套人工智能视频+pdf 下载次数 6443

 IOS全套视频教程 基础班+就业班 下载次数 4680

 编程小白的第一本python入门书(高清版)PDF下载 下载次数 3654

10  effective python编写高质量Python代码的59个有效方法 pdf下载 下载次数 3366

11  Python深度学习 pdf下载 下载次数 3156

12  笨办法学python pdf下载 下载次数 3088

13  Python Cookbook第三版中文PDF下载高清完整扫描原版 下载次数 3025

14  树莓派Python编程指南 pdf下载 下载次数 3011

15  python从入门到精通视频(全60集)python视频教程下载 下载次数 3009

16  python项目开发视频 下载次数 3002

17  使用python+pygame开发的小游戏《嗷大喵快跑》源码下载 下载次数 3000

18  黑马2017年java就业班全套视频教程 下载次数 2992

19  Python基础教程 pdf下载 下载次数 2988

20  python实战项目 平铺图像板系统源码下载,适用于想要保存,标记和共享图像,视频和网页的用户 下载次数 2987

21  利用python实现程序内存监控脚本 下载次数 2987

22  老男孩python自动化视频 下载次数 2983

23  老王python基础+进阶+项目视频教程 下载次数 2974

24  尚硅谷Go学科全套视频 下载次数 2972

25  某硅谷Python项目+AI课程+核心基础视频教程 下载次数 2968

26  Web前端实战精品课程 下载次数 2967

27  Python算法教程_中文版 pdf下载 下载次数 2967

28  tron python小游戏 下载次数 2963

29  [小甲鱼]零基础入门学习Python 下载次数 2962

30  老男孩python全栈开发15期 下载次数 2958

31  2017最新web前端开发完整视频教程附源码 下载次数 2948

32  最新全套完整JAVAWEB2018开发视频 下载次数 2926

33  流畅的Python PDF下载高清完整扫描原版 下载次数 2922

34  Spring boot实战视频6套下载 下载次数 2910

35  Python高性能编程 pdf下载 下载次数 2908

36  python全套视频十五期(116G) 下载次数 2908

37  Python项目实战 下载次数 2887

38  利用Python进行数据分析 pdf下载 下载次数 2885

39  30个小时搞定Python网络爬虫 含源码 下载次数 2884

40  简明python教程 (A Byte of Python)pdf下载 下载次数 2884

41  python全自动抢火车票教程-python视频教程下载 下载次数 2883

42  尚硅谷大数据之Hadoop视频 下载次数 2876

43  Python A~B~C~ python视频教程下载 下载次数 2866

44  数据结构与算法视频(小甲鱼讲解-全) 下载次数 2864

45  web小程序表白天数倒计时源码下载 下载次数 2863

46  python基础视频教程 下载次数 2862

47  go语言全套视频 下载次数 2855

48  清华学霸尹成Python爬虫视频-ok 下载次数 2846

49  黑马前端36期最全视频和代码 下载次数 2843

50  2018最新全套web前端视频教程+源码下载 下载次数 2842