Python进阶练习--string

a=100
b ='ccc'
print(f"test string{a},{b}")   #3.6引入

print(f"test string{100},{200}")  #直接打印常量


print("test string {}, b {}".format(a,b))    #python3引入,打印多个变量
print("test string {}, b {}".format(100,'dddddd'))  #直接打印常量
print('test string {1}, b {0}'.format(200, 'dddddd'))          #输出test string dddddd, b 200;{}里可以指定后面嵌入第几个位置参数
print('test string {0}, b {1}'.format(200, 'dddddd'))          #输出test string 200, b dddddd;{}里可以指定后面嵌入第几个位置参数
print('test string {0}, b {1}'.format(200, 'dddddd'))          #输出test string 200, b dddddd;{}里可以指定后面嵌入第几个位置参数
print('test string {0}, b {1}, c {0}'.format(200, 'dddddd'))          #输出test string 200, b dddddd, c 200;{}里可以指定后面嵌入第几个位置参数
print('test string {1}, b {1}, c {1}'.format(200, 'dddddd'))          #输出test string dddddd, b dddddd, c dddddd;{}里可以指定后面嵌入第几个位置参数
# print('test string {}, b {}, c {}'.format(200, 'dddddd'))            #错误,参数不足, NO OK
print('test string {}, b {}'.format(200, 'dddddd', 200))        #输出test string 200, b dddddd,参数超过不影响

#取列表或者其他数据结构参数
nums = [12, 33, 22, 11, 55, 22]
print('test string list {0[0]}, b {0[3]}'.format(nums))  #test string list 12, b 11,特殊写法

#取字典数据
dictd = {12:22, 13:'dd', 'abc':123, 'add':'dd'}
print('test string dict {info[12]} , {info[add]}'.format(info=dictd))   #test string dict 22 , dd
print('test string dict {abc} , {add}'.format(**dictd))   #test string dict 123 , dd, 拆包

#可以通过位置参数传入
print('test string {name}, b {age}'.format(name = 'hel', age = 12))   #test string hel, b 12 不依赖顺序
print('test string {age}, b {name}'.format(name = 'hel', age = 12))   #test string 12, b hel  不依赖顺序

#:>代表右对其,:<代表左对齐, 8代表占用8个字符位置
print('*******{:>8}*******'.format(999))          #*******     999*******  ;右对齐占用8个位置
print('*******{:<8}*******'.format(999))          #*******999     *******  ;左对齐占用8个位置
print('*******{:0>8}*******'.format(999))         #*******00000999*******  ;右对齐占用8个位置,左侧补0
print('*******{:a>8}*******'.format(999))         #*******aaaaa999*******  ;右对齐占用8个位置,左侧补a
print('*******{:1<8}*******'.format(999))         #*******99911111*******  ;左对齐占用8个位置,右侧补1
print('*******{:c<8}*******'.format(999))         #*******999ccccc*******  ;左对齐占用8个位置,右侧补c

#:.指定小数点位数,:,指定以逗号分割
# print('test string {.3f}'.format(3.1314141515))   #没有:出错,no ok
print('test string {:.3f}'.format(3.1314141515))     #test string 3.131
print('test string {:,}'.format(3314141515))         #test string 3,314,141,515

#以不同进制格式化打印
print('data is {:b}'.format(31))  #data is 11111, 二进制
print('data is {:d}'.format(31))  #data is 31, 十进制
print('data is {:x}'.format(31))  #data is 1f, 十六进制小写
print('data is {:X}'.format(31))  #data is 1F, 十六进制大写
print('data is {:o}'.format(31))  #data is 37,八进制


class Person(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def __str__(self):
        # return 'Name is {}, Age is {}'.format(self.name, self.age)                     #等价实现1
        # return 'Name is {name}, Age is {age}'.format(name=self.name, age=self.age)     # 等价实现2
        # return f'Name is {self.name}, Age is {self.age}'                               #等价实现3
        # return 'Name is %s, Age is %d'%(self.name, self.age)                           #等价实现4
        return 'Name is {self.name}, Age is {self.age}'.format(self = self)              # 等价实现5,相当于self是变参做替换

p = Person('laowang', 23)
print(p)               #Name is laowang, Age is 23


print("test %d in "%(a))   #python2引入
print("test %d in %s" %(a,b))   #打印多个变量
print("test %d in %s" %(100,"ddddd"))  #直接打印常量
print("test %d in %f" %(100,3.14))  #直接打印常量
print("test %d in %.4f" %(100,3.14))    #指定小数点后位数


b = 'this is a test string'
c = "this is a test string"

str = '123456789'
print(str[0])     #输出'1',数组下标为0到8
print(str[8])     #输出'9',数组下标为0到8
print(str[-1])    #输出'9',数组下标为-9到-1
print(str[-9])    #输出'1',数组下标为-9到-1


#str[start:end:step],获取start到end中间的字符串(不包括end字符),步长为step
print(str[0:3])             #获取前3个字符123
print(str[-9:-7])           #获取前两个字符,12
print(str[-9:-1:2])         #从第一个字符取到倒数第二个,不包括最后一个,步长为2,1357
print(str[:-1:2])           #从第一个字符取到倒数第二个,不包括最后一个,步长为2,1357
print(str[::2])             #步长为2获取所有字符13579
print(str[:-1])             #从第一个字符取到倒数第二个,不包括最后一个,12345678
print(str[0:])              #获取所有字符,123456789
print(str[:9])              #获取所有字符,123456789
print(str[3:-1])            #获取部分字符,45678
print(str[8:1:-2])          #获取部分字符,9753,步长为负,sart>end
print(str[-1:-6:-2])        #获取部分字符,975,步长为负,sart>end
print(str[::1])             #步长为1,从左到右获取所有字符,123456789
print(str[::-1])            #步长为-1,从右到左获取所有字符,987654321
print(str[:])               #默认步长为1,从左到右获取所有字符,123456789


mystr = '123456789'
mystr.find('1234', 0, len(mystr))
print(mystr.find('456',0, len(mystr)))     #返回开始的索引值,返回3
print('123456789'.find('456', 0,len('123456789')))          #返回开始的索引值,返回3

print('123456789'.rfind('456', 0,len('123456789')))         #在目标字符串里反向查找字符串,3
print('123456789'.count('55', 0,len('123456789')))         #统计56字符串个数,0
print('123456789'.replace('456', 'abc',2))         #abc替换456,最多替换2次

print(' 123 345 444 444 '.split())               #默认用空格与换行切分,得到list:['123', '345', '444', '444']
print(' 123 345 444 444 '.split(' ', 6))         #使用' '切分字符串,最多切分出6块,得到list:['', '123', '345', '444', '444', '']
print('#123#345#444#444#'.split('#', 3))         #使用'#'切分字符串,最多切分出3块,得到list:['', '123', '345', '444#444#']

print('abc Def cccDDAA dd'.startswith('abc D'))  #True
print('abc Def cccDDAA dd'.startswith('ac'))     #False
print('abc Def cccDDAA dd'.endswith(' dd'))   #True
print('abc Def cccDDAA dd'.endswith('cdd'))   #False

print('abc Def cccDDAA dd'.lower())    #'abc def cccddaa dd'
print('abc Def cccDDAA dd'.upper())    #'ABC DEF CCCDDAA DD'


#strip移除两端,lstrip移除开头,rstrip移除结尾,strip('abc')会移除abc,aaa,cba,等等不是说移除连续的abc
print(' abc Def cccDDAA dd '.strip())    #'abc Def cccDDAA dd' ,去掉开头结尾空白字符(空格,换行,制表符)
print(' abc Def cccDDAA dd '.strip('dd'))    #' abc Def cccDDAA dd',去掉开头结尾'dd'
print(' abc Def cccDDAA dd '.strip('dd '))    #'abc Def cccDDAA dd',去掉开头结尾'dd '


print('1234512333123333'.partition('123'))   #分割成三部分,str前,str和str后,只以第一个分割,('', '123', '4512333123333')


print('这是一个\n美丽的用完\n你好啊\n'.splitlines())   #按照行分隔,['这是一个', '美丽的用完', '你好啊']

print('1234512333123333'.isalpha())        #判断是否全字母,输出False
print('12345123abASAddd33'.isalpha())      #判断是否全字母,输出False
print('abcdeAAAAdadfa'.isalpha())          #判断是否全字母,输出True

print('1234512333123333'.isdigit())       #判断是否全数字,输出True
print('12345123abASAddd33'.isdigit())     #判断是否全数字,输出False
print('abcdeAAAAdadfa'.isdigit())         #判断是否全数字,输出False


print('1234512333123333'.isalnum())           #都是字母或数字则返回 True,输出True
print('12345123abASAddd33'.isalnum())         #都是字母或数字则返回 True,输出True
print('abcdeAAAAdadfa'.isalnum())             #都是字母或数字则返回 True,输出True


L = ['hell' , 'owred', '1234' , 'abc']         #使用特殊字符把list中字符串连起来
print('你哈的啊啊啊大ddd'.join(L))       #输出'hell你哈的啊啊啊大dddowred你哈的啊啊啊大ddd1234你哈的啊啊啊大dddabc'
print(''.join(L))                 #输出'hellowred1234abc'
print(' '.join(L))                 #输出'hell owred 1234 abc'


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值