Python基础4——字符串

字符串是不可变对象。
所有标准的序列操作都同样适用于字符串。

4.1字符串格式化与格式化输出

字符串格式化使用字符串格式化操作符即百分号%来实现。
基本的转换说明符:

  • %字符:标记转换说明的开始。
  • 转换标志(可选):-表示左对齐(默认是右对齐);+表示在转换值之前要加上正负号;“ ”字符表示正数之前应该保留空格;0表示转换值若位数不够则用0填充。
  • 最小字段宽度(可选):转换后的字符串至少应该具有该值指定的宽度。如果是*,则宽度会从值元组中读出。
  • 点(.)后跟精度值(可选):如果转换的是实数,精度值就表示出现在小数点后的位数。如果转换的是字符串,那么该数字就表示最大字段宽度。
  • 转换类型:d,f,s这些是常用的,分别表示整数,浮点数,字符串。

4.1.1简单转换

简单的转换只需要写出转换类型,很简单:

>>> 'Price of eggs: $%d' % 42
'Price of eggs: $42'
>>> from math import pi
>>> 'Pi: %f......' % pi
'Pi: 3.141593......'
>>> 'My name is %s' % 'Marry'
'My name is Marry'

4.1.2字段宽度和精度

转换说明符可以包括宽度和精度。字段宽度是转换后的值所保留的最小字符个数。两个参数都是整数,前面是字段宽度后面是精度用点(.)分隔。
注意:当只有宽度参数的时候可以没有点,但是只要有精度参数就一定要有点存在。

>>> '10%f' % pi
'103.141593'
>>> '%.2f' % pi
'3.14'

4.1.3符号,对齐和用0填充

在字段宽度和精度前还可以放一个表示标志的位,该标志可以是零、加号、减号或空格。
零表示数字会用0进行填充:

>>> '%010.2f' % pi    #宽度为10不够用0填充
'0000003.14'

-表示左对齐:

>>> '%-10.2f' % pi
'3.14      '

“ ”正数前面加上空格:用于正负数对齐的时候比较有用

>>> print (('% 5d' % 10) +'\n' + ('% 5d' % -10))
   10
  -10

+表示不管是正负都把符号显示出来:

>>> print (('%+5d' % 10) +'\n' + ('%+5d' % -10))
  +10
  -10

4.1.4 format

format
str.format(*args, **kwargs) 传入任意参数

'{}{}{}'.format(s,t,r)
'{0}{0}{0}'.format(s,t,r)
'{2}{1}{0}'.format(s,t,r)

'{x}{y}{z}'.format(x=s,y=t,z=r)  #  字典,无序
'{x}{x}{x}'.format(x=s,y=t,z=r)  #dic = dict(x=s,y=t,z=r)

类似的:

格式化输出:

'%s%s%s'   %   (s,t,r)
'%s %s %s'  %  (s,t,r)             #顺序传入  %s和()必须相等  %s-->str

4.1.5科学计数法

'%e' % 1     #'1.000000e+00'   e+00=10^0
'%e' % 10
'%e' % 100   #'1.000000e+02'    e+02 = 10^2

'%x' % 9    #16进制  0123456789abcdef
'%x' % 15
'%x' % 16

'%o' % 8   #  8进制   01234567  9第二轮多一个 11
'%o' % 9   #       11
'%o' % 10  #  12

4.2字符串方法

S.count(sub[, start[, end]]) -> int

S.find(sub[, start[, end]]) -> int     #返回第一个出现的下标,会有返回-1
    Return -1 on failure.

S.index(sub[, start[, end]]) -> int 
    Like S.find() but raise ValueError when the substring is not found.

S.endswith(suffix[, start[, end]]) -> bool    #如果是以第一个参数结尾,返回True,反之返回False

S.startswith(prefix[, start[, end]]) -> bool  #如果以第一个参数开头,返回True,反之返回False

S.isalpha() -> bool   #判断字符串是否是字母(全为字母)

S.isdigit() -> bool   #判断字符串是否是数字(全为数字)

S.lower() -> str      #如果字符串全是小写,返回True

S.upper() -> str      #如果字符串全是大写,返回True

S.replace(old, new[, count]) -> str   #替换,可以用count指定替换次数,默认全部替换

S.split(sep=None, maxsplit=-1) -> list of strings   #切割,默认全部以空格为分隔符切割,可以指定分隔符和切割次数。

S.join(iterable) -> str   #连接,意思和split相反,以s为连接符对一个可迭代对象进行连接
>>> '*'.join('hello')
'h*e*l*l*o'
>>> ''.join('world')
'world'

s.strip()     #默认去掉两侧的空格,也可以指定去掉其他字符,但是只能是两侧的

4.3 字符串的拼接
4种方法
(1)+号

>>> 'Hello'+'world'
'Helloworld'

(2)格式化输出

>>> 'I like %s' % 'Python'
'I like Python'

(3)format
这个格式化输出基本类似

>>> 'I like {}'.format('Python')
'I like Python'

(4)join函数
这个函数上面提到了,用来进行字符串拼接的

>>> c = ['hello','world']
>>> ''.join(c)
'helloworld'

4.4深浅拷贝

关于这部分内容可以参考前面的一篇博文: Python 直接赋值、浅拷贝和深拷贝

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值