July's Blog

花有重开日,人无再少年

0%

python常用函数方法

字符串函数

join()

join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。
str.join(item),join函数是一个字符串操作函数。
str表示字符串(字符),item表示一个成员,注意括号里必须只能有一个成员,比如','.join('a','b')这种写法是行不通的。

1
2
#将字符串abc中的每个成员,以字符','分隔开再拼接成一个字符串
','.join('abc')

输出结果为'a,b,c'

join里放列表、元组、字典也是可以的

1
2
';'.join([a,b,c])
>> 'a;b;c'

参考:Python中的 .join()用法

split()

str.split(sep="",num=string.count(str))[n]
拆分字符串。通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(list),如果参数 num 有指定值,则仅分隔 num+1 个子字符串。

  • sep:表示为分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等,但是不能为空(‘’)。若字符串中没有分隔符,则把整个字符串作为列表的一个元素
  • num:表示分割次数。如果存在参数num,则仅分隔成 num+1 个子字符串,并且每一个子字符串可以赋给新的变量
  • [n]:表示选取第n个分片
  1. 无参数的情况
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
a="my name is zhangkang"
b="my\nname\nis\nzhangkang"
c="my\tname\tis\tzhangkang"

a=a.split()
b=b.split()
c=c.split()

print(a)
print(b)
print(c)

# 输出:
>>> ['my', 'name', 'is', 'zhangkang']
>>> ['my', 'name', 'is', 'zhangkang']
>>> ['my', 'name', 'is', 'zhangkang']
  1. 有参数的情况
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
d="my,name,is,zhangkang"
e="my;name;is;zhangkang"
f="my-name-is-zhangkang"

d=d.split(",")
e=e.split(";")
f=f.split("-")

print(d)
print(e)
print(f)

# 输出:
>>> ['my', 'name', 'is', 'zhangkang']
>>> ['my', 'name', 'is', 'zhangkang']
>>> ['my', 'name', 'is', 'zhangkang']
  1. 有两个参数的情况
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
a="My,name,is,zhangkang,and,I,am,a,student"
b1=a.split(",",1)
b2=a.split(",",2)
b8=a.split(",",8)
b9=a.split(",",9)

print(b1)
print(b2)
print(b8)
print(b9)

# 输出:
>>> ['My', 'name,is,zhangkang,and,I,am,a,student']
>>> ['My', 'name', 'is,zhangkang,and,I,am,a,student']
>>> ['My', 'name', 'is', 'zhangkang', 'and', 'I', 'am', 'a', 'student']
>>> ['My', 'name', 'is', 'zhangkang', 'and', 'I', 'am', 'a', 'student'] #超过最大分割次数,还是最大分割,不报错

参考:python中split()函数讲解

strip()

声明:s为字符串,rm为要删除的字符序列。
rm为空时,默认删除空白符(包括\n, \r, \t, ' ')

s.strip(rm),删除s字符串中开头、结尾处,位于rm删除序列的字符
s.lstrip(rm),删除s字符串中开头处,位于rm删除序列的字符
s.rstrip(rm),删除s字符串中结尾处,位于rm删除序列的字符

1
2
3
4
5
6
7
8
9
b = '123abc'
>>> b.strip('12')
'3abc'
>>> b.strip('21') # 没有顺序
'3abc'
>>> b.strip('31') # 只要开头和结尾中含有rm中的字符 就删除
'23abc'
>>> b.strip('bc')
'123a'

print(f ‘‘)的用法

用法示例

print(f'.....')

注意:f后面一定要紧跟字符串,不能隔有空格,否则会报错

print语句中加入f就可以起到和format函数类似的作用。

1
2
3
4
5
6
7
8
a = 1
b = 2
c = 3
print(f'a={a}, b={b}, c={c}')
# 等价于print('a={}, b={}, c={}'.format(a, b, c))

结果:
a=1, b=2, c=3

可以看出printf的语法特别清楚,他比较器format的用法更加清晰,因为format还需要前后将括号对号入座,而printf中的括号可以直观地直接看的里面的值是什么

{:.nf}控制小数点位数

1
2
3
4
5
6
7
8
9
10
import numpy as np
a = np.sqrt(2)
b = np.sqrt(3)
c = np.sqrt(5)
print(f'a={a:.1f}, b={b:.2f}, c={c:.3f}')
# 等效于print('a={:.1f}, b={:.2f}, c={:.3f}'.format(a, b, c))

结果
a=1.4, b=1.73, c=2.236
# 分别保留1位,两位,三位小数

{:.nf},n代表着保留几位小数,上面的例子一目了然

这里可以看到,printf比format的优势更明显了,括号里一目了然

更多解释

参考python官方文档:
https://docs.python.org/3.6/whatsnew/3.6.html#pep-498-formatted-string-literals

**这种字符常量表示方式是在python3.6之后引入的。**更低的版本会报错

PEP 498(即Python Enhancement Proposals, Python增强提案或Python改进建议书),引入了一种新的字符串字面量:f-字符串,或格式化字符串字面量。格式化字符串字面值以’f’作为前缀,类似于str.format()所接受的格式字符串。它们包含用花括号括起来的替换字段。

更详细的介绍可以参考PEP 498的页面:https://www.python.org/dev/peps/pep-0498/

请作者喝冰阔落