Python常用内置模块使用

1. file

file用于文件读写。

# 读取所有
f = open('hello.txt','r')
result = f.read()
print(result)
f.close()

# 读取指定数量的字符
f = open('hello.txt','r')
result = f.read(10) # 只读取10个字符
print(result)
f.close()

# 读取所有行
f = open('hello.txt','r')
result = f.readlines()
print(result)
f.close()

# 只读取一行
f = open('hello.txt','r')
result = f.readline() # 读取一行
print(result)
f.close()

# 每次读取一行打印
f = open('hello.txt','r')
for line in f:
    print(line.strip())

# 写文件
f = open('hello.txt','w')
f.write("hello world") # 覆盖掉源文件内容,再写入
f.close()

结果:

hello
world
python
hello
worl
['hello\n', 'world\n', 'python']
hello

hello
world
python

2. str

字符串是python中常用的数据类型。

2.1 字符串长度

# len() 返回字符串字符长度
string = "人生苦短,我用Python!"
print(len(string)) # 不区分中文和英文字符
print(len(strint.encode())) # 计算utf-8编码的字符长度,中文占三个字符
print(len(strint.encode("gbk"))) # 计算utf-8编码的字符长度,中文占两个字符

结果:

14
28
21

2.2 截取字符串

# string[start:end:step] 截取,不包括end,step可省略
str1 = "人生苦短,我用Python!"
print(str1[2])
print(str1[5:])
print(str1[:5])
print(str1[2:5])
print(str1[:5:2])
print(str1[2::2]) # 可省略stop
print(str1[15:]) # 索引值不存在,但不报错
# print(str1[15]) # 索引值不存在,报错

# listName = str.split(sep,maxsplit) 分割字符串,sep默认是空白符(空格、换行、制表),maxsplit分割次数,-1表示没有限制
str1 = '你  有 多 自信,\n世界 就有 多 相信你'
print(str1.split())
print(str1.split(" "))
print(str1.split(" ",5))
print(str1.split("\n"))

str1 = "@明日科技 @扎克伯格 @俞敏洪 @勤奋的天使"
list1 = str1.split(' ')
for item in list1:
	print(item[1:]) # 输出每个好友,并去掉@符号

# strnew = string.join(iterable) 合并字符串,string是分隔符,iterable是要合并的可迭代对象
list1 = ["明日科技","扎克伯格","俞敏洪","勤奋的天使"]
str1 = " @".join(list1)
at = "@" + str1
print(at)

结果:

苦
我用Python!
人生苦短,
苦短,
人苦,
苦,用yhn

['你', '有', '多', '自信,', '世界', '就有', '多', '相信你']
['你', '', '有', '多', '自信,\n世界', '就有', '多', '相信你']
['你', '', '有', '多', '自信,\n世界', '就有 多 相信你']
['你  有 多 自信,', '世界 就有 多 相信你']
明日科技
扎克伯格
俞敏洪
勤奋的天使
@明日科技 @扎克伯格 @俞敏洪 @勤奋的天使

2.3 检索

# str.count(sub[, start[, end]]) 检索子字符串数量
str1 = '@明日科技 @扎克伯格 @俞敏洪 @勤奋的天使'
print(str1.count('@'))

# str.find(sub[, start[, end]]) 查找子字符串首次出现的位置
print(str1.find('@'))
print(str1.find('*')) # 没找着返回-1
print('@' in str1) # 判断是否存在
print('*' in str1)
# str.rfind() 从右开始查找
print(str1.rfind('@'))

# index() 查找子字符串首次出现的位置
print(str1.index('@'))
# print(str1.index('*')) # 不存在,抛异常
print(str1.rindex('@'))

# str.startswith(prefix[, start[, end]]) 检索一个字符串是否以指定的字符串开头
print(str1.startswith('@'))
print(str1.startswith('*'))

# str.endswith(suffix[, start[, end]]) 检索一个字符串是否以指定的字符串结束
print(str1.endswith('@'))
str1 = '@明日科技 @扎克伯格 @俞敏洪 @勤奋的天使*'
print(str1.endswith('*'))

结果:

4
0
-1
True
False
17
0
17
True
False
False
True

2.4 去除字符串中的空格和特殊字符

# str.strip([chars]) 去除左右两侧的指定字符,默认去除空格、制表符\t、回车符\r、换行符\n
str1 = " http://www.mingrisoft.com \t\n\r"
print(str1.strip())
print(str1.strip(' '))
str1 = "* http://www.mingrisoft.com \t\n\r*"
print(str1.strip('*'))

# str.lstrip([chars]) 去除左侧指定字符

# str.rstrip([chars]) 去除右侧指定字符

结果:

http://www.mingrisoft.com
http://www.mingrisoft.com 	

 http://www.mingrisoft.com 	

2.5 字符串格式化

# 两种方法

# 使用%操作符,python早期版本方法
# '%[-][+][0][m][.n]格式化字符'%exp
# -表示左对齐,在正数的前方无符号,在负数的前面加上负号
# +表示右对齐,在正数的前方加上正号,在负数的前面加上负号
# 0表示右对齐,在正数的前方无符号,在负数的前面加上负号,并且用0填充空白处,和m参数一起使用
# m表示数值表示的宽度
# .n表示小数点后保留的位数
# exp代表要转换的项,如果有多个项,必须使用元组,而不能使用列表
template = '编号:%09d\t公司名称:%s\t官网:http://www.%s.com' # 定义模板
item = (7,"百度","baidu") # 要转换的内容
print(template%item)

# 使用字符串对象的format()方法,推荐使用
# str.format(args)
# str是模板
# args是要转换的项
template = '编号:{:0>9s}\t公司名称:{:s}\t官网:http://www.{:s}.com' # 模板
context1 = template.format('7','百度','baidu')
print(context1)

import math
print("以货币形式显示:¥{:,.2f}元".format(1251+3950))
print("{0:.1f}用科学计数法表示:{0:E}".format(120000.1)) # :前面的数字表示对要转换的项的索引
print("Π取5为小数:{:.5f}".format(math.pi))
print("{0:d}的十六进制是:{0:#x}".format(100))
print("天才是由{:.0%}的灵感,加上{:.0%}的汗水。".format(0.01,0.99))

结果:

编号:000000007	公司名称:百度	官网:http://www.baidu.com
编号:000000007	公司名称:百度	官网:http://www.baidu.com
以货币形式显示:¥5,201.00120000.1用科学计数法表示:1.200001E+05
Π取5为小数:3.14159
100的十六进制是:0x64
天才是由1%的灵感,加上99%的汗水。

3. 函数式编程

在这里插入图片描述

# map(function,iterable)
def func(x):
    return x**3
map_obj = map(func,[1,2,3,4])
print(map_obj)
map_obj = list(map(func,[1,2,3,4]))
print(map_obj)
map_obj = list(map(lambda x:x**3,[1,2,3,4])) # lambda函数表达式
print(map_obj)

# filter(function,iterable)
def is_below_zero(x):
    return x<0
result = filter(is_below_zero,[-1,2,3,-5,4])
print(result)
result = list(filter(is_below_zero,[-1,2,3,-5,4]))
print(result)
result = list(filter(lambda x:x>0,[-1,2,3,-5,4]))
print(result)

# reduce(function,iterable[,initializer])
# iterable每次传入两个参数给function,从左到右,最后返回一个数值
# initializer如果给定,则传给函数的第一个值
from functools import reduce
result = reduce((lambda x,y:x*y),[1,2,3,4])
print(result)
result = reduce((lambda x,y:x*y),[1,2,3,4],2)
print(result)
result = reduce((lambda x,y:x*y),[1,2,3,4],[2,3])
print(result)

结果:

[1, 8, 27, 64]
<filter object at 0x7f765b74d0f0>
[-1, -5]
[2, 3, 4]
24
48
[2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3]

4. random

random模块用于生成伪随机数。

import random

# - random.random() 生成0-1之间的浮点数
# - random.randint(start,stop) 生成一个start,stop之间的整数,包含右侧的值
# - random.randrange(start,stop,step) 生成一个start,stop之间一定步长的整数,不包含右侧的值
# - random.choice(sequence) 从一个有序序列中随机选择一个元素
# - random.shuffle(sequence) 随机打乱列表的顺序,原列表发生变化
# - random.sample(sequence,k) 从有序序列或集合中随机抽样k个元素

print(random.random())

print(random.randint(0,10))

print(random.randrange(0,10,2))

astr = 'hello world'
alist = [1,2,3,4,5]
aset = set(alist)
adict = {'name':'dcm','age':12,'height':170}
print(random.choice(astr))
print(random.choice(alist))
# print(random.choice(aset)) # set无序
# print(random.choice(adict)) # dict无序

astr = 'hello world'
alist = [1,2,3,4,5]
aset = set(alist)
adict = {'name':'dcm','age':12,'height':170}
print(alist)
# print(random.shuffle(astr)) # 不支持str
print(random.shuffle(alist)) # random.shuffle()没有返回值
print(alist)
# print(random.shuffle(aset)) # 不支持set
# print(random.shuffle(adict)) # 不支持dict

astr = 'hello world'
alist = [1,2,3,4,5]
aset = set(alist)
adict = {'name':'dcm','age':12,'height':170}

print(random.sample(astr,2))
print(random.sample(alist,2))
print(random.sample(aset,2))
# print(random.sample(adict,2)) # 不支持字典采样

结果:

0.09588800360244876
5
8
o
4
[1, 2, 3, 4, 5]
None
[5, 1, 4, 3, 2]
['e', 'l']
[3, 2]
[3, 1]

Process finished with exit code 0

5. re正则表达式

参考廖雪峰的python教程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值