Python学习之字符串

目录

文章目录

前言

一、字符串的定义

二、字符串的常用操作

1.大小写字母转换

2.左中右对齐

         3.查找

         4.替换

         5.判断 

         6.截取

         7.拆分

         8.拼接

         9.格式化字符串

总结


前言

Python这门语言在如今很多方面都会用到,本文介绍了Python中的字符串学习的基本内容。

提示:以下是本篇文章正文内容,下面案例可供参考

一、字符串的定义

  • 字符串就是一串字符,是编程语言中表示文本的数据类型。在Python中可以用一对双引号("")或者一对单引号('')来定义一个字符串。需要注意的是Python中没有像C++表示的字符类型(char),所有的字符或字符串都被统一为str对象。

例如:

1. str1 = '少吃一碗饭'
2. str2 = '不能少吃'

二、字符串的常用操作

1.大小写字母转换

函数作用
capitalize()将字符串首字母变大写,其余字母小写
casefold()返回一个所有字母都是小写的字符串
title()将字符串中每个单词的首字母都变大写,该单词其他字母小写
swapcase()将字符串中的所有字母大小写反转,小变大,大变小
upper()返回一个所有字母都是大写的字符串
lower()返回一个所有字母都是小写的字符串

代码如下(示例):

1. str1 = 'I love Math'
2. #以下为函数示例
3. str1.capitalize()
4. 'I love math'
5. str1.casefold()
6. 'i love math'
7. str1.title()
8. 'I Love Math'
9. str1.swapcase()
10. 'i LOVE mATH'
11. str1.upper()
12. 'I LOVE MATH'
13. str1.lower()
14. 'i love math'

2.左中右对齐

函数作用
center(width,fillchar=' ')中对齐,fillchar参数可以随意设置,默认值为空格
ljust(width,fillchar=' ')左对齐,fillchar参数可以随意设置,默认值为空格
rjust(width,fillchar=' ')右对齐,fillchar参数可以随意设置,默认值为空格
zfill(width)用0填充

代码如下(示例):

1. #以下为函数示例
2. #若指定的宽度小于等于源字符串,则直接源字符串输出
3. '520'.center(2)
4. '520'

5. '520'.center(5)
6. ' 520 '

7. #填充参数可以修改为其他值,这里设为0
8. '520'.center(5,'0')
9. '05200'

10. '520'.ljust(5)
11. '520  '

12. '520'.rjust(5)
13. '  520'

14. '520'.zfill(5)
15. '00520'

16. '-520'.zfill(5)
17. '-0520'

3.查找

函数作用
count(sub[,start[,end]])用于查找sub参数指定的子字符串在字符串中出现的次数
find(sub[,start[,end]])用于定位sub参数指定的子字符串在字符串中的索引值下标,从左往右找
rfind(sub[,start[,end]])用于定位sub参数指定的子字符串在字符串中的索引值下标,从右往左找
index(sub[,start[,end]])与find(),rfind()作用类似,区别是find()找不到子字符串会返回-1,而index()和rindex()会报错。从左往右找
rindex(sub[,start[,end]])与index()作用类似,从右往左找

代码如下(示例):

1. #以下为代码示例

2. '我今天晚上住我家'.count('我')
3. 2

4. #start和end参数可以指定查找的区间
5. '我今天晚上住我家'.count('我',0,5)
6. 1

7. '我今天晚上住我家'.find('我')
8. 0
9. '我今天晚上住我家'.rfind('我')
10. 6

11. #以下为find(),rfind()和index(),rindex()函数的区别
12. '我今天晚上住我家'.index('你')
13. Traceback (most recent call last):
  File "<pyshell#18>", line 1, in <module>
    '我今天晚上住我家'.index('你')
ValueError: substring not found

14. '我今天晚上住我家'.find('你')
15. -1

4.替换

函数作用
expandtabs([tabsize=8])返回一个字符串,其中所有的'\t'字符均替换为空格字符,直到tabsize参数的下一个倍数为止
replace(old,new,count=-1)返回一个将old参数设定的子字符串替换成new参数指定的子字符串的新字符串,count参数指定替换次数,默认值为-1
translate(table)table参数用于指定一个转换规则,常用str.maketrans(x[,y[,z]])来转换
  • expandtabs([tabsize=8])函数中的tabsize参数默认值为8。从头开始数,数到第一个\t正好为8个空格,不足则补空格,如果还有\t,接着从第一个\t数到第二个\t仍然为8个空格,以此类推直到最后一个\t结束。
  • translate(table)函数中的table参数一般可以用str.maketrans(x[,y[,z]])转换,第一个参数相当于被替换的子字符串,第二个参数相当于要替换成的新字符串,第三个参数表示要截取的子字符串。

代码如下(示例)

1. #以下为函数代码示例

2. str = 'xyz\t12345\tabc'
3. str.expandtabs()
4. 'xyz     12345   abc'
5. #tabsize参数默认值为8
6. str.expandtabs(10)
7. 'xyz       12345     abc'
8. str.expandtabs(3)
9. 'xyz   12345 abc'

10. str1 = 'ABCDEFGABCD'
11. str1.replace('A','1')
12. '1BCDEFG1BCD'
13. #count参数默认值为-1,只要遇到old参数指定的子字符串就替换为新的
14. str1.replace('A','1',1)
15. '1BCDEFGABCD'

16. str1.translate(str.maketrans('A','1','EFG'))
17. '1BCD1BCD'

18. str1.translate(str.maketrans('AB','12','EFG'))
19. '12CD12CD'

20. str1.translate(str.maketrans('AB','12'))
21. '12CDEFG12CD'

5.判断 

  • 以下判断函数均返回布尔类型值,True或False。
函数作用
startswith(prefix[,start[,end]])判断在第二个和第三个参数设定的区间内,搜索的第一个参数设定的字符串是否出现在起始位置
endswith(suffix[,start[,end]])判断在第二个和第三个参数设定的区间内,搜索的第一个参数设定的字符串是否出现在结束位置
isupper()判断字符串中的所有字符是否都大写
islower()判断字符串中的所有字符是否都小写
istitle()判断字符串中的每个单词是否都以大写字母开头,且其余字母为小写字母
isalpha()判断一个字符串中是否只有字母构成
isspace()判断是否为一个空白字符串(Tab,空格,转义字符\n等)
isprintable()判断一个字符串中是否所有字符都是可打印的(\n转义字符并不是可打印的)
isdecimal()判断数字
isdigit()判断数字

isnumeric()

判断数字
isalnum()只要有isalpha(),isdecimal(),isdigit(),isnumeric()中的任意一个方法返回True,则结果都是True
isidentifier()用于判断这个字符串是否是一个合法的Python标识符
  • 以下表格为三个判断数字函数的区别:
函数TrueFalseError
isdecimal()Unicode数字,全角数字(双字节)罗马数字,汉字数字byte数字(单字节)
isdigit()Unicode数字,byte数字(单字节),全角数字(双字节),罗马数字汉字数字
isnumeric()Unicode数字,全角数字(双字节),罗马数字,汉字数字byte数字(单字节)

代码如下(示例)

1. #以下为函数代码示例
2. '我爱Python'.startswith('我')
3. True
4. '我爱Python'.startswith('爱')
5. False

6. '我爱Python'.endswith('n')
7. True
8. '我爱Python'.endswith('n',0,4)
9. False

10. 'I LOVE PYTHON'.isupper()
11. True
12. 'I LOVE PYTHON'.islower()
13. False
14. 'I LOVE PYTHON'.istitle()
15. False

16. 'I LOVE PYTHON'.isalpha()
17. False
18. #该字符串中还含有空格

19. ' '.isspace()
20. True
21. ' \n'.isspace()
22. True
23. 'i love python'.isprintable()                         
24. True
25. 'i love python\n'.isprintable()                  
26. False

27. '12345'.isdecimal()                           
28. True
29. '一二三四五'.isdecimal()                        
30. False
31. '一二三四五'.isdigit()                            
32. False
33. '一二三四五'.isnumeric()                           
34. True

35. '一二三四五'.isalnum()                            
36. True

37. 'abc123...'.isidentifier()                           
38. False
39. 'abc123_'.isidentifier()                            
40. True
41. '123abc_'.isidentifier()                            
42. False

6.截取

函数作用
strip(chars=None)从两侧剔除参数指定的字符
lstrip(chars=None)从左侧剔除参数指定的字符
rstrip(chars=None)从右侧剔除参数指定的字符
removeprefix(prefix)删除参数指定的字符前缀
removesuffix(suffix)删除参数指定的字符后缀
  • strip(chars=None),lstrip(chars=None),rstrip(chars=None)函数中的chars参数默认值为None,意为去除留白,参数可设为字符串,匹配参数设定的字符串中的单个字符后剔除。
  • removeprefix(prefix),removesuffix(suffix)函数匹配的是参数设定的整个字符串而不是单个字符。

代码如下(示例)

1. '  删除两侧留白   '.strip()                         
2. '删除两侧留白'
3. '  删除左侧留白   '.lstrip()                         
4. '删除左侧留白   '
5. '  删除右侧留白   '.rstrip()                         
6. '  删除右侧留白'

7. 'www.csdn.com'.strip('w.com')
8. 'sdn'
9. 'www.csdn.com'.lstrip('w.com')
10. 'sdn.com'
11. 'www.csdn.com'.rstrip('w.com')
12. 'www.csdn'                      

13. 'www.csdn.com'.removeprefix('www.com')
14. 'www.csdn.com'                       
15. 'www.csdn.com'.removeprefix('www.')                          
16. 'csdn.com'                           
17. 'www.csdn.com'.removesuffix('.com')                           
18. 'www.csdn'                           

7.拆分

函数作用
partition(sep)从左到右切割
rpartition(sep)从右到左切割
split(sep=None,maxsplit=-1)从左到右分割
rsplit(sep=None,maxsplit=-1)从右到左分割
splitlines(keepends=False)按行进行分割
  • partition(sep),rpartition(sep)函数将字符串以参数指定的分割符为依据进行切割,将切割后的结果返回一个含三个元素的元组,第一个元素是分割符左侧内容,中间元素是分割符,第三个元素是分割符右侧内容。
  • split(sep=None,maxsplit=-1),rsplit(sep=None,maxsplit=-1)函数默认情况下切分空格,并将结果打包成列表返回,可通过第一个参数设定分割符,第二个参数表示切割次数,默认值为-1.
  • splitlines(keepends=False)函数将字符串按行进行分割,且将结果以列表的形式返回(\n,\r,\r\n),keepends参数指定结果是否包含换行符,True包含,False不包含,参数默认值为False。

代码如下(示例)

1. 'www.csdn.com'.partition('.')                          
2. ('www', '.', 'csdn.com')
3. 'www.csdn.com'.rpartition('.')                            
4. ('www.csdn', '.', 'com')

5. 'www csdn com'.split()                            
6. ['www', 'csdn', 'com']
7. 'www,csdn,com'.split()                            
8. ['www,csdn,com']
9. 'www csdn com'.split(' ',1)                            
10. ['www', 'csdn com']
11. 'www csdn com'.rsplit(' ',1)                            
12. ['www csdn', 'com']

13. 'www\ncsdn\ncom'.splitlines()                            
14. ['www', 'csdn', 'com']
15. 'www\ncsdn\ncom'.splitlines(True)                            
16. ['www\n', 'csdn\n', 'com']

8.拼接

  • 用join(iterable)函数来表示字符串的拼接。其中iterable参数可用列表或元组来表示。

例如:

1. '.'.join(['www','csdn','com'])
                            
2. 'www.csdn.com'

9.格式化字符串

  • format()。使用一对花括号来表示替换字段,真正的内容放在format方法的参数中。
  • 可通过数字来索引。参数中的字符串将会被当作元组的元素对待,故下标索引值从0开始,而花括号中的数字填的正是下标索引值,同一个索引值可被引用多次。
1. '{0}{0}{1}{1}'.format('红','火')                          
2. '红红火火'
  • 也可通过关键字来索引。
1. '我叫{name},我爱{thing}'.format(name='小明',thing='Python')                         
2. '我叫小明,我爱Python'
  • 也可将数字和关键字组合索引。
1. '我叫{0},我爱{thing}'.format('小明',thing='Python')                         
2. '我叫小明,我爱Python'

  • 输出花括号。可以在参数中设置花括号,也可以使用花括号注释花括号。
1. '{}{}{}'.format(1,'{}',2)                         
2. '1{}2'

3. '{}{{}}{}'.format(1,2)                          
4. '1{}2'
  • [align]参数指定对齐方式,[width]指定宽度,冒号左边是位置索引,右边是格式化选项。
[align]参数作用
<左对齐
>右对齐
=填充0
^居中对齐

例如:

1.  '{1:%>10}{0:%<10}'.format(520,250)                            
2. '%%%%%%%250520%%%%%%%'
3. #冒号左边的为位置索引,右边的%表示填充字符,可修改,>和<表示对齐方向,10表示显示宽度
  • 以下仅针对数字来说
+正数前面加正号(+),负数前面加负号(-)
-只有负数前面加负号(-)
空格正数前面加一个空格,负数前面加负号(-)

例如:

1. '{:+}{:-}'.format(520,-250)                           
2. '+520-250'
  • 千分位的分割符有逗号和下横线两种表示方式。如果位数不足,千位分割符是不显示的。例如:
    1. '{:,}'.format(1314)                         
    2. '1,314'
    3. '{:_}'.format(1314)                            
    4. '1_314'
    5. '{:_}'.format(131)                            
    6. '131'
  • 精度选项

    对于[type]设置为'f'或'F'的浮点数来说,是限定小数点后显示多少个数位
    对于[type]设置为'g'或'G'的浮点数来说,是限定小数点前后一共显示多少个数位
    对于非数字类型来说,限定的是最大字段的大小
    对整数类型来说,不允许使用[.precision]选项

    例如:

    1. '{:.2f}'.format(3.1415)                           
    2. '3.14'
    3. '{:.2g}'.format(3.1415)                            
    4. '3.1'
    5. '{:.6}'.format('I love Python')                           
    6. 'I love'
    
    7. '{:.2}'.format(520)                            
    8. Traceback (most recent call last):
      File "<pyshell#106>", line 1, in <module>
        '{:.2}'.format(520)
    ValueError: Precision not allowed in integer format specifier
    
  • type类型选项,决定了数据应当如何来呈现,此表类型适用于整数,在参数类型前加一个'#'则参数以二进制,八进制,十六进制在字符串中输出时,它会自动来追加一个前缀。

含义
'b'将参数以二进制的形式输出
'c'将参数以Unicode字符的形式输出
'd'将参数以十进制的形式输出
'o'将参数以八进制的形式输出
'x'将参数以十六进制的形式输出
'X'将参数以十六进制的形式输出
'n'跟'd'类似,不同之处在于它会使用当前语言环境设置的分隔符插入到恰当位置
None跟'd'一样

例如:

1. '{:b}'.format(80)                          
2. '1010000'

3. '{:c}'.format(80)                            
4. 'P'

5. '{:d}'.format(80)                            
6. '80'

7. '{:o}'.format(80)                            
8. '120'

9. '{:x}'.format(80)                            
10. '50'

11. '{:#x}'.format(80)                          
12. '0x50'

13. '{:#b}'.format(80)
14. '0b1010000'
  • 此表类型是用于浮点数和复数
    含义
    'e'将参数以科学计数法的形式输出(以字母'e'来标示指数,默认精度为6)
    'E'将参数以科学计数法的形式输出(以字母'E'来标示指数,默认精度为6)
    'f'将参数以定点表示法的形式输出("不是数"用'nan'标示,无穷用'inf'标示,默认精度为6)
    'F'将参数以定点表示法的形式输出("不是数"用'NAN'标示,无穷用'INF'标示,默认精度为6)
    'g'通用格式,小数以'f'形式输出,大数以'e'形式输出
    'G'通用格式,小数以'F'形式输出,大数以'E'形式输出
    'n'跟'g'类似,不同之处在于它会使用当前语言环境设置的分隔符插入到恰当的位置
    '%'以百分比的形式输出(将数字乘以100并显示为定点表示法('f')的形式,后面附带一个百分号)
    None类似于'g',不同之处在于当使用定点表示法时,小数点后将至少显示一位;默认精度与给定值所需要的精度一致
    例如:
  • 1. '{:e}'.format(3.1415)
    2. '3.141500e+00'
    
    3. '{:E}'.format(3.1415)
    4. '3.141500E+00'
    
    5. '{:f}'.format(3.1415)
    6. '3.141500'
    
    7. '{:g}'.format(31415)
    8. '31415'
    
    9. '{:g}'.format(314151234)
    10. '3.14151e+08'
    
    11. '{:%}'.format(0.31)
    12. '31.000000%'
  • 也可通过关键字参数来设定选项的值,关键字需要用花括号括起来,且可以设定多个关键字参数。例如:

  • 1. '{:.{prec}f}'.format(3.1415,prec=2)
    2. '3.14'
    
    3. '{:{fill}{align}{width}.{prec}{ty}}'.format(3.1415,fill='+',align='^',width=10,prec=3,ty='g')
    4. '+++3.14+++'
  • f-字符串(f-string),使用语法只要在普通的字符串前面加上一个f-/F-作为一个前缀即可。例如:

    1. '1+2={},2的平方是{},3的立方是{}'.format(1+2,2*2,3*3*3)
    2. '1+2=3,2的平方是4,3的立方是27'
    3. f'1+2={1+2},2的平方是{2*2},3的立方是{3*3*3}'
    4. '1+2=3,2的平方是4,3的立方是27'
    
    5. '{:010}'.format(-520)
    6. '-000000520'
    7. f'{-520:010}'
    8. '-000000520'

    需要注意的是,f-字符串(f-string)是python3.6的产物,故如果写的代码部署在该版本以下的机器的时候,它是无法被识别的。

总结

以上就是今天要讲的内容,本文仅仅简单介绍了python中字符串的使用,而python提供了大量能使我们快速便捷地处理数据的函数和方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值