Python基础
字符串
# 字符串前缀(u前缀UTF-8编码、r原始字符串、f模板字符串)
s = r"aa\nbb" # r 或 R 前缀,原始字符串(raw string)
# 字符串模板,aaa和bbb是变量,s是生成的字符串
s = f"{aaa},{bbb}."
# re.match,字符串是否满足某个正则表达式,返回bool
re.match("^[0-9]+: ", s)
# re.findall,在字符串中查找,返回一个list
re.findall("^[0-9]+: ([0-9a-z]+): <", s)
re.findall("^[0-9]+: ([0-9a-z]+): <", s, re.S) # re.S(把换行也算进去)
s = " aaa,bbb "
len(s) # 返回字符串 s 的长度。
s.strip() # 去除字符串 s 两端的空白字符(包括空格、换行符、制表符等)。
s.lstrip() # 去除字符串 s 左端的空白字符。
s.rstrip() # 去除字符串 s 右端的空白字符。
s.split(sep) # 将字符串 s 分割为一个列表,使用 sep 作为分隔符。
s.splitlines() # 按照行结束符分割字符串 s。
s.replace(old, new) # 返回一个新字符串,其中 s 中的所有 old 子字符串都被替换为 new。
s[start:end:step] # 返回字符串 s 的一个切片,从 start 索引开始到 end 索引结束(不包括 end),步长为 step。
s.find(sub) # 查找子字符串 sub 在 s 中首次出现的索引,如果未找到则返回 -1。
s.index(sub) # 与 find() 方法类似,但如果未找到子字符串则引发 ValueError 异常。
循环
# 遍历0-9
for i in range(0, 10):
print(i)
# 遍历1,3,5,7,9
for i in range(1, 10, 2):
print(i)
数组的用法
# 定义数组
arr = []
# 添加元素
arr.append(xxxxx)
arr = ["aaa", "ccc", "bbb"]
# 直接遍历元素
for e in arr:
print(e)
# 索引i和元素arr[i]
for i in range(len(arr)):
print(i, arr[i])
# enumerate遍历,索引i和元素e。enumerate(arr, start=10),指定索引从10开始
for i, e in enumerate(arr):
print(i, e)
字典的用法
# 定义
obj = {}
obj['name'] = "zhangsan"
obj['age'] = 23
obj['xxxx'] = True
print(obj)
# 字典转json字符串
json_str = json.dumps(obj)
# 字符串转字典
obj = json.loads('{"name": "zhangsan", "age": 23, "xxxx": true}')
# 遍历key
for key in obj:
print(key)
# 遍历key和value
for k, v in obj.items():
print(k, v)
# 判断key是否存在
if 'age' in obj:
print("key exist")
# 判断key不存在
if 'age1' not in obj:
print("key not exist")
数字
# 保留两位小数,四舍五入 round
round(10 / 6, 2) # 1.67
时间相关
# 休眠1秒
time.sleep(1)
# 休眠0.1秒
time.sleep(0.1)
# 2023-12-21 01:14:18.181892
datetime.datetime.now()
# 2024-04-06 15:46:42.027
str(datetime.datetime.now())[0:-3]
# 秒级别时间戳 1703092458.0791686
time.time()
round(time.time())
# 毫秒级别时间戳 1703093671275
round(time.time() * 1000)
# 纳秒级别时间戳1698204425088401100
time.time_ns()
# 2023-12-21 01:38:49
time.strftime("%Y-%m-%d %H:%M:%S")
类型转换
# 获取类型
print(type(xxxxx))
# 数字转字符串
n = 999
s = str(n)
# 字符串转数字
s = "999"
n = int(s)
# 字符串转浮点数
s = "3.14"
n = float(s)
# 类型判断
obj = {}
if isinstance(obj, dict):
print("dict类型")
elif isinstance(obj, list):
print("list类型")
else:
print("其他类型")
正则表达式
根据正则表达式生成随机字符串
# 根据正则表达式生成随机字符串
from xeger import Xeger
x = Xeger()
for i in range(10):
print(x.xeger(r"[a-z]{5}"))
# Xeger().xeger(r"[a-z]{5}")
JSON相关
# json包
import json
# 将dict类型的数据转成str
json.dumps(obj)
json.dumps(obj, indent=4)
# 将str类型的数据转换为dict类型或list类型
json.loads(jsonString)
# demjson:功能更加强大
import demjson
# 对象转json
demjson.encode(obj)
demjson.encode(obj, encoding='utf-8')
# json转对象
demjson.decode(jsonString)
demjson.decode(jsonString, encoding='utf-8')
# 从json文件中读取数据
with open(r'F:\test\aaa.json', 'r', encoding='utf-8') as f:
obj = json.load(f)
print(obj)
print(type(obj))
读写文件
# 读文件
fp = open(r'F:\test\aaa.txt', 'r', encoding='utf-8')
str1 = fp.read() # 读取全部
list1 = fp.readlines() # 按行读取
fp.close()
# 写文件 w覆盖写 a追加写 (文件不存在会自动创建)
txtlist = ['第一行\n', '第二行\n', '第三行\n']
with open(bbb, 'w', encoding='utf-8') as fp:
fp.write("aaa\nbbbccc\n") # 写入文件
fp.writelines(txtlist) # 按行写入