day 5 字符串

目录

大小写字母变换

左中右对齐

查找

替换

判断

截取

拆分

拼接

格式化


  • 大小写字母变换

方法:capitalize()、casefold()、title()、swapcase()、upper()、lower()

>>> x = 'HelLo WorlD'

##除了第一个首字母大写其它小写
>>> x.capitalize()
'Hello world'
>>> 
##全部都变小写
>>> x.casefold()
'hello world'
>>> 
##首字母为大写其它为小写
>>> x.title()
'Hello World'
>>> 
##大小写互换
>>> x.swapcase()
'hELlO wORLd'
>>> 
##全部变大写
>>> x.upper()
'HELLO WORLD'
>>> 
##全部变小写
>>> x.lower()
'hello world'
>>> 

**注
##lower() 只对 ASCII 也就是 'A-Z'有效,但是其它一些语言里面存在小写的情况就没办法了
>>> x = 'ß'
>>> x.lower()
'ß'
>>> x.casefold()
'ss'
>>> 
  • 左中右对齐

方法:center(width, fillchar=' ')、ljust(width, fillchar=' ')、rjust(width, fillchar=' ')、zfill(width)

>>> x = 'Hello World'
>>>
##居中对齐并以#填充 
>>> x.center(15,'#')
'##Hello World##'
>>> 
##左对齐并以#填充
>>> x.ljust(15,'#')
'Hello World####'
>>>
##右对齐并以#填充
>>> x.rjust(15,'#')
'####Hello World'
##在字符串的开头添加零(0),直到达到指定的长度
>>> x.zfill(15)
'0000Hello World'
>>> 
  • 查找

count(sub[, start[, end]])、find(sub[, start[, end]])、rfind(sub[, start[, end]])、index(sub[, start[, end]])、rindex(sub[, start[, end]])

>>> x = '好好学习,天天向上'
>>> 
>>> x.count('好')
2
>>> x.count('好',0,1)
1
>>> x.find('天')
5
>>> x.rfind('天')
6
##find()如果字符串没有为-1
>>> x.find('书')
-1
>>> x.index('天')
5
>>> x.rindex('天')
6
>>>
  • 替换

方法:expandtabs([tabsize=8]):它的作用是使用空格替换制表符并返回新的字符串。

           replace(old, new, count=-1):返回一个将所有 old 参数指定的子字符串替换为 new 的新字符串。另外,还有一个 count 参数是指定替换的次数,默认值 -1 表示替换全部。

           translate(table):返回一个根据 table 参数(用于指定一个转换规则的表格)转换后的新字符串。需要使用 str.maketrans(x[, y[, z]]) 方法制定一个包含转换规则的表格。

##将字符串中的 Tab 转换成空格,其中 tabsize 参数指定的是一个 Tab 使用多少个空格来代替:
>>> temp = '''
	print('Hello world')
    print('Hello python')'''
>>> new_temp = temp.expandtabs(4)
>>> print(new_temp)

    print('Hello world')
    print('Hello python')
>>> 

>>> '好好学习,天天向上'.replace('好','天',1)
'天好学习,天天向上'

>>> table = str.maketrans('ABCDEFG','1234567')
>>> 'HELLO WORLD'.translate(table)
'H5LLO WORL4'
>>> 
## str.maketrans() 方法还支持第三个参数,表示将其指定的字符串忽略
>>> 'HELLO WORLD'.translate(str.maketrans('ABCDEFG','1234567','WO'))
'H5LL RL4'
>>> 
  • 判断

方法:startswith(prefix[, start[, end]])、endswith(suffix[, start[, end]])、istitle()、isupper()、islower()、isalpha()、isascii()、isspace()、isprintable()、isdecimal()、isdigit()、isnumeric()、isalnum()、isidentifier()
这 14 个方法都是应对各种情况的判断,所以返回的都是一个布尔类型的值 —— 要么是 True,要么是 False。

##这两个方法都有 start 和 end 两个可选的参数,用于指定匹配的开始和结束位置:
>>> x = 'Hello python'
>>> x.startswith('H')
True
>>> x.endswith('python')
True
>>> x.startswith('e',1)
True
>>> x.endswith('lo',0,5)
True
>>> 
**注:这个 prefix 和 suffix 参数呀,其实是支持以元组的形式传入多个待匹配的字符串的
>>> x = '你好,python'
>>> x.startswith(('你','我','他'))
True
>>> 


##判断一个字符串中的所有单词是否都是以大写字母开头,其余字母均为小写
>>> x = 'Hello Python'
>>> x.istitle()
True

##判断一个字符串中所有字母是否都是大写或者小写
>>> 'HELLOPYTHON'.isupper()
True
>>> 
>>> 'hello python'.islower()
True

##判断一个字符串中是否只是由字母组成
>>> 'hello python'.isalpha()
False
>>> 'hellopython'.isalpha()
True
>>> 

##判断一个字符串中是否只是由 ASCII 字符组成
>>> 'hellopython'.isascii()
True
>>> 

##判断是否为一个空白字符串
>>> ' '.isspace()
True
>>> ' \t\n'.isspace()
True
>>> 

##判断一个字符串中是否所有字符都是可打印的
>>> 'hello python'.isprintable()
True
>>> 'hello python\t'.isprintable()
False
>>> 'hello python\n'.isprintable()
False
>>> 

##判断数字,isalnum() 方法则是集大成者,只要 isalpha()、isdecimal()、isdigit() 或者 isnumeric() 任意一个方法返回 True,结果都为 True
>>> x = '12345'
>>> x.isdecimal()
True
>>> x.isdigit()
True
>>> x.isnumeric()
True
>>> x = "ⅠⅡⅢⅣⅤ"
>>> x.isdecimal()
False
>>> x.isdigit()
False
>>> x.isnumeric()
True
>>> x = "一二三四五"
>>> x.isdecimal()
False
>>> x.isdigit()
False
>>> x.isnumeric()
True
>>> x = "壹贰叁肆伍"
>>> x.isdecimal()
False
>>> x.isdigit()
False
>>> x.isnumeric()
True
>>> 

##判断一个字符串是否为 Python 的保留标识符,就是像 “if”、“for”、“while” 这些关键字的话,可以使用 keyword 模块的 iskeyword() 函数来实现
>>> import keyword
>>> keyword.iskeyword('if')
True
>>> 
  • 截取

方法:lstrip(chars=None)、rstrip(chars=None)、strip(chars=None)、removeprefix(prefix)、removesuffix(suffix)

##截取字符串
>>> 'www.baidu.com'.lstrip('wcom.')
'baidu.com'
>>> 'www.baidu.com'.rstrip('wcom.')
'www.baidu'
>>> 'www.baidu.com'.strip('wcom.')
'baidu'
>>> 

**注:python3.9以上才有
>>> "www.baidu.com".removeprefix("www.")
'baidu.com'
>>> "www.baidu.com".removesuffix(".com")
'www.baidu'
  • 拆分

方法:partition(sep)、rpartition(sep)、split(sep=None, maxsplit=-1)、rsplit(sep=None, maxsplit=-1)、splitlines(keepends=False)
partition(sep) 和 rpartition(sep) 方法:就是将字符串以 sep 参数指定的分隔符为依据进行切割,返回的结果是一个 3 元组(3 个元素的元组),partition(sep) 和 rpartition(sep) 方法的区别是前者是从左往右找分隔符,后者是从右往左找分隔符,如果找不到分隔符,返回的仍然是一个 3 元组,只不过将原字符串放在第一个元素,其它两个元素为空字符串;

## partition(sep) 和 rpartition(sep) 方法
>>> 'www.baidu.com'.partition('.')
('www', '.', 'baidu.com')
>>> 'www.baidu.com'.rpartition('.')
('www.baidu', '.', 'com')
>>> 
>>> 'www.baidu.com'.partition('/')
('www.baidu.com', '', '')
>>> 

split(sep=None, maxsplit=-1) 和 rsplit(sep=None, maxsplit=-1) 方法则是可以将字符串切成一块块

>>> '人之初,性本善,性相近,习相远'.split(',')
['人之初', '性本善', '性相近', '习相远']
>>> '人之初,性本善,性相近,习相远'.rsplit(',')
['人之初', '性本善', '性相近', '习相远']
>>> '人之初,性本善,性相近,习相远'.split(',',1)
['人之初', '性本善,性相近,习相远']
>>> 
>>> '人之初,性本善,性相近,习相远'.rsplit(',',2)
['人之初,性本善', '性相近', '习相远']

splitlines(keepends=False) 方法:会将字符串进行按行分割,并将结果以列表的形式返回 ;keepends 参数用于指定结果是否包含换行符,True 是包含,默认 False 则表示是不包含;

##\r和\n都可以表示换行,True要大写
>>> '人之初\r性本善\n性相近\r\n习相远'.splitlines(True)
['人之初\r', '性本善\n', '性相近\r\n', '习相远']
>>> 
  • 拼接

join(iterable) 方法:是用于实现字符串拼接的

>>> '.'.join(['www','baidu','com'])
'www.baidu.com'
>>> '.'.join(('www','baidu','com'))
'www.baidu.com'
  • 格式化

在字符串中,格式化字符串的套路就是使用一对花括号({})来表示替换字段,就在原字符串中先占一个坑的意思,然后真正的内容被放在了 format() 方法的参数中。

>>> 'Hello py{}'.format('thon')
'Hello python'
>>> 
##在花括号里面,可以写上索引值,表示参数的位置,同一个索引值是可以被多次引用的
>>> '1+1={1},2的平方{0}'.format(2*2,1+1)
'1+1=2,2的平方4'
>>> 
##f-string用于python3.6以上
>>> x = 'thon'
>>> f'Hello py{x}'
'Hello python'
>>> f'1+1={1+1},2的平方是{2*2}'
'1+1=2,2的平方是4'
>>> 

注:字符串格式化语法参考

可以直接在字符串的 format() 方法上使用,也可以用于 Python3.6 后新添加的 f-字符串

format_spec     ::=  [[fill]align][sign][#][0][width][grouping_option][.precision][type]
fill            ::=  <any character>
align           ::=  "<" | ">" | "=" | "^"
sign            ::=  "+" | "-" | " "
width           ::=  digit+
grouping_option ::=  "_" | ","
precision       ::=  digit+
type            ::=  "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"

>>> '{:^10}'.format('hello')
'  hello   '
>>>
##在指定宽度的前面还可以添加一个 '0',则表示为数字类型启用感知正负号的 '0' 填充效果,这种用法只对数字有效
>>> '{:010}'.format(123)
'0000000123'
>>>  

以下类型适用于整数:

以下类型值适用于浮点数、复数和整数(自动转换为等值的浮点数):

猜你喜欢

转载自blog.csdn.net/Poolhuang/article/details/126474474