字符串(String)

定义: 一系列字符;

在Python中,使用 ' ' or " "括起来的都是字符串;

是Python中最常用的一种数据类型(datatype)。

常用操作:

1、连接操作[ + ]:

x = str1 + str2

1 var1 = '123'
2 var2 = '456'
3 var3 = var1 + var2
4 print(var3)
5 --->123456

2、复制操作[ * ]:

x = str1 * n         n必须为整数。

1 var1 = '123'
2 var4 = var1 * 3
3 print(var4)
4 --->123123123

3、索引操作[ [] ]:

x = str[n]  n为x在字符串中的位置;Python中,正数从0开始计数,倒数从-1开始。

1 var1 = 'abcde0'
2 var2 = var1[0]
3 print(var2)
4 --->a

4、切片操作[ [ : : ] ]:

x = str[a : b : c]  a 为起始位置,b 为终止位置(在结果中,不包含 b 值),c 为索引增加的值(默认为1)。

如果进行复制,可使用 [:]

如果进行倒数排序,可使用[:: -1]

1 var1 = 'abcde0'
2 var2 = var1[0:3]
3 print(var2)
4 --->abc
6 var1 = 'abcdefghijklmnopqrstuvwxyz'
7 var2 = var1[0:15:2]
8 print(var2)
9 --->acegikmo

5、成员检查[ in & not in ]:

检查x是否在字符串中,返回bool值;

'x' in str   'x' not in str

1 var1 = 'ABCDEFG'
2 print('A' in var1)
3 print('A' not in var1)
4 --->True
5 --->False

6、原始字符串[ r & R]:

所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。

原始字符串除在字符串的第一个引号前加上字母"r"(可以大小写)以外,与普通字符串有着几乎完全相同的语法。

r"str"

1 var1 = r'A\nB\\C\'D\"EFG'
2 print(var1)
3 --->A\nB\\C\'D\"EFG

字符串中的转义字符:需要在字符中使用特殊字符时,python用反斜杠(\)转义字符。

1、续行符:\  在行尾时使用

1 var1 = 'ABCDE\
2         FG'

2、反斜杠符号:\\   在输出的字符串中显示一个\

1 var1 = 'ABCDE\\FG'
2 print(var1)
3 --->ABCDE\FG

3、单&双引号:\'  &  \" 在输出的字符串中显示一个 ' 或 "

1 var1 = 'ABC\"DE\'FG'
2 print(var1)
3 --->ABC"DE'FG

4、空:\000  在输出的字符串中显示一个空格

1 var1 = 'ABCDE\000FG'
2 print(var1)
3 --->ABCDE FG

5、换行:\n  将字符串输出为两行

1 var1 = 'ABCDE\nFG'
2 print(var1)
3 --->ABCDE
4 --->FG

6、横向&纵向制表符:\t & \v

1 var1 = '\tABCDEFG'
2 print(var1)
3 --->    ABCDEFG


字符串相关常用函数:

1、capitalize():  将字符串第一个字符大写

1 var1 = 'hello_world'
2 print(var1.capitalize())
3 --->Hello_world

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

1 var1 = 'hello_world'
2 print(var1.title())
3 --->Hello_World

3、upper()  &  lower():  将所有字符大写&小写

1 var1 = 'hello_world'
2 print(var1.upper())
4 var2 = 'ABCDEFG'
5 print(var2.lower())
7 --->HELLO_WORLD
8 --->abcdefg

4、swapcase():  字符串中大小写互换

1 var2 = 'ABcdeFG'
2 print(var2.swapcase())
3 --->abCDEfg

5、len():  获取字符串长度

1 var1 = 'hello_world'
2 print(len(var1))
3 --->11

6、count():统计字符串中指定字符的出现次数

count('x', a, c)  'x' 为指定字符;a,b为起始和终止区间范围(区间不包含 b ;默认为查找全部区间)

1 var = 'abcdergaaaawerwasfwwweaatse'
2 print(var.count('a'))
3 --->8
4 print(var.count('a', 0, 15))
5 --->5

7、find() & index():  查找指定字符在字符串中第一次出现的位置

find():找到后会返回指定字符在字符串中的索引,如果不存在,则返回 -1

index():用法同find(),但是 如果不存在,则会报错

1 var1 = 'hello_world'
 2 print(var1.find('l'))
 3 --->2
 4 print(var1.find('g'))
 5 --->-1
 6 print(var1.index('l'))
 7 --->2
 8 print(var1.index('g'))
 9 --->Traceback (most recent call last):
10   File "文件路径", line 5, in <module>
11     print(var1.index('g'))
12 ValueError: substring not found

8、split():  使用特定字符将字符串切割成多个字符串组成的列表

.split(str="",=string.count(str))  参数num为分割次数

1 var1 = 'hello_world_hello_China'
2 print(var1.split('_'))
3 --->['hello', 'world', 'hello', 'China']
4 print(var1.split('_', 1))
5 --->['hello', 'world_hello_China']

9、splitlines():  按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表

.splitlines([keepends])  keepends在输出结果里是否去掉换行符('\r', '\r\n', \n'),默认为 False,不包含换行符,如果为 True,则保留换行符

1 var1 = 'a\nbcd\ref\r\nghij\rklmn'
2 print(var1.splitlines())
3 --->['a', 'bcd', 'ef', 'ghij', 'klmn']
4 print(var1.splitlines(True))
5 --->['a\n', 'bcd\r', 'ef\r\n', 'ghij\r', 'klmn']

10、join():  将序列中的元素以指定的字符连接生成一个新的字符串(相当于split的反向操作)

str.join(sequence)  sequence为要连接的元素序列

1 list1 = ['a', 'b', 'c', 'd', 'e']
2 var1 = '-'.join(list1)
3 print(var1)
4 --->a-b-c-d-e

11、strip(chars)         |--两边--|

lstrip(chars)  将字符串的--|--起始--|--符号去掉,默认去除空格;将指定符号去掉后,空格补位

rstrip(chars)         |--末尾--|

chars为指定字符

1 var1 = '  abcd  '
 2 var2 = '@@abc@@'
 3 print(var1.strip())
 4 --->abcd
 5 print(var1.lstrip())
 6 --->abcd  
 7 print(var1.rstrip())
 8 --->  abcd
 9 print(var1.strip('@'))
10 --->  abcd

12、zfill():  0的填充效果(常用于数据库中数据的存储)

center(width, fillchar)                         |--居中

ljust(width, fillchar)    使用指定字符填充字符串,原有字符串内容--|--居左

rjust(width, fillchar)                         |--居右

width为新字符串的总长度,fillchar为要填入的字符

*warning*:

  1. 不提供 fillchar 参数则默认为空格
  2. width 参数小于等于原字符串的长度时,原样返回
  3. 无法使左右字符数相等时候,右侧字符会比左侧少 1
1 var1 = 'abcd'
2 print(var1.zfill(10))
3 --->000000abcd
4 print(var1.center(9, '¥'))
5 --->¥¥¥abcd¥¥
6 print(var1.ljust(9, '¥'))
7 --->abcd¥¥¥¥¥
8 print(var1.rjust(9, '¥'))
9 --->¥¥¥¥¥abcd

13、maketrans() 和 translate():字符串替换操作

.maketrans(intab,)  intab -- 字符串中要替代的字符组成的字符串

outtab -- 相应的映射字符的字符串

deletechars -- 字符串中要删除的字符列表

.translate(table)  table -- 翻译表,翻译表是通过maketrans方法转换而来

1 var1 = 'ABcdABefffffffff'
2 var2 = ''.maketrans('AB', '你好', 'f')
3 var3 = var1.translate(var2)
4 print(var3)
5 --->你好cd你好e

14、字符串的检测:

,,end):检测字符串是否以指定的字符开头  suffix为一个字符串或者一个元素,start,end为检索字符串的起始和终止位置,返回bool值

suffix,,end):-----------------------------结尾

1 var1 = 'abcabdcsidjsffwaiddddksf'
2 print(var1.startswith('ab'))
3 --->True
4 print(var1.endswith('ddd'))
5 --->False

2、isalnum():如果字符串 至少有一个字符 并且所有字符都是 字母或数字则返 回 True ,否则返回 False

isalpha():如果字符串 至少有一个字符 并且所有字符都是 字母则返回 True , 否则返回 False

1 var1 = 'abcabdcsidjsffwaiddddksf'
2 var2 = '22323'
3 print(var1.isalnum())
4 --->True
5 print(var2.isalpha())
6 --->False

3、isdigit():    如果字符串只包含数字则返回 True 否则返回 False..

isnumric():  如果字符串中只包含数字字符,则返回 True,否则返回 False

isdecimal():   检查字符串是否只包含十进制字符。这种方法只存在于unicode对象。

注意: 定义一个十进制字符串,只需要在字符串前添加 'u' 前缀即可。

非常感谢前辈总结出来的结果!

isdigit()
  True: Unicode数字,byte数字(单字节),全角数字(双字节),罗马数字
  False: 汉字数字
  Error: 无
  isdecimal()
  True: Unicode数字,,全角数字(双字节)
  False: 罗马数字,汉字数字
  Error: byte数字(单字节)
  isnumeric()
  True: Unicode数字,全角数字(双字节),罗马数字,汉字数字
  False: 无
  Error: byte数字(单字节)



pythonz中文语音识别 python语音读文字

1. 转语音工具 微信读书里的电子书有配套的自动音频,而且声音优化的不错,比传统的机械朗读听起来舒服很多。 记得之前看到过Python有一个工具包,可以将文字转换为语音,支持英文和中文,而且能调节语速语调、导出mp3等。 去Github查了下,这个库叫:pyttsx3 简单来说,pyttsx3可以文字转语音,且是离线工作的,这一点就很实用。