- 读取和写入CSV文件
- 在列表,字典,集合中根据条件筛选数据
- 列表
- 字典
- 集合
- 为元组中的每个元素命名
- 方法1:使用一系列的数值常量
- 方法2:使用枚举类
- 方法3:使用标准库中collections.namedtuple代替内置tuple
读取和写入CSV文件
读取文件中学生成绩高于60的数据,并写入新的文件中
import csv
# 写入文件
with open("test.csv", 'w', encoding='utf-8') as wf:
writes = csv.writer(wf)
writes.writerow(["id", "name", "age", "score"])
writes.writerow([1, "李四", 14, 45.4])
writes.writerow([2, "张三", 18, 61])
writes.writerow([3, "王二", 35, 30.1])
writes.writerow([4, "麻子", 44, 88])
# 读取文件中学生成绩高于60的数据,并写入新的文件中
with open("test.csv", 'r', encoding='utf-8') as rf:
# 获取读取的句柄
reader = csv.reader(rf)
# 通过next()获取头部
headers = next(reader)
# 写入新的文件中
with open("newFile.csv", 'w', encoding='utf-8') as wf:
# 获取写入句柄
writes = csv.writer(wf)
# 写入刚才获取的头部
writes.writerow(headers)
# 读取每一行数据
for student in reader:
# 获取成绩的列
score = student[-1]
# 判断成绩的列存在且大于等于60
if score and float(score) >= 60:
# 写入新文件中
writes.writerow(student)
在列表,字典,集合中根据条件筛选数据
列表
from random import randint
l = [randint(-10, 10) for i in range(10)]
# 方法1-列表解析
m = [x for x in l if x >= 0] # [8, 7, 10, 1, 4]
# 方法2-filter()方法
n = filter(lambda x: x >= 0, l)
print(list(n))
字典
# 字典
d = {"student%d" % d: randint(50, 100) for d in range(21)}
# 方法1-字典解析
dc = {k: v for k, v in d.items() if v > 90}
print(dc)
# 方法2-filter()方法
dn = filter(lambda x: x[1] > 90, d.items())
print(dict(dn))
集合
# 集合
s = {randint(-10, 10) for x in range(10)}
# 方法1-集合解析
sm = {x for x in s if x >= 0}
print(sm)
# 方法2-使用filter()方法
sd = filter(lambda x: x >= 0, sm)
print(set(sd))
为元组中的每个元素命名
方法1:使用一系列的数值常量
# 为元组中每一个元素命名
# 方法1:使用一系列的数值常量
NAME, AGE, SEXE, EMAIL = range(4)
stu = ("李四", 16, "man", "pyj.moon@gmail.com")
def get_func(student):
# 通过常量命名
if student[AGE] < 18:
print(student[0] + "的年龄小于18")
if student[SEXE] == "male":
print(student[0] + "的性别为:male")
get_func(student=stu)
方法2:使用枚举类
# 导入int型的枚举类
from enum import IntEnum
class StuentEnum(IntEnum):
NAME = 0
AGE = 1
SEXE = 2
EMAIL = 3
print(stu[StuentEnum.NAME]) # 李四
print(isinstance(StuentEnum.NAME, int)) # True StuentEnum.NAME是int的实例
方法3:使用标准库中collections.namedtuple代替内置tuple
# 方法3:使用标准库中collections.namedtuple代替内置tuple
from collections import namedtuple
# 第一个参数,命名元组的名字;第二个参数,每个元素的名字
s1 = namedtuple("StudentTest", ["name", "age", "sex", "email"])
# 使用命名元组创建一个元组
s2 = s1("李四", 16, "man", "pyj.moon@gmail.com")
print(s2)
# 使用命名元组的方式,访问字段
print(s2.name) # 李四
- 读取和写入CSV文件
- 在列表,字典,集合中根据条件筛选数据
- 列表
- 字典
- 集合
- 为元组中的每个元素命名
- 方法1:使用一系列的数值常量
- 方法2:使用枚举类
- 方法3:使用标准库中collections.namedtuple代替内置tuple
读取和写入CSV文件
读取文件中学生成绩高于60的数据,并写入新的文件中
import csv
# 写入文件
with open("test.csv", 'w', encoding='utf-8') as wf:
writes = csv.writer(wf)
writes.writerow(["id", "name", "age", "score"])
writes.writerow([1, "李四", 14, 45.4])
writes.writerow([2, "张三", 18, 61])
writes.writerow([3, "王二", 35, 30.1])
writes.writerow([4, "麻子", 44, 88])
# 读取文件中学生成绩高于60的数据,并写入新的文件中
with open("test.csv", 'r', encoding='utf-8') as rf:
# 获取读取的句柄
reader = csv.reader(rf)
# 通过next()获取头部
headers = next(reader)
# 写入新的文件中
with open("newFile.csv", 'w', encoding='utf-8') as wf:
# 获取写入句柄
writes = csv.writer(wf)
# 写入刚才获取的头部
writes.writerow(headers)
# 读取每一行数据
for student in reader:
# 获取成绩的列
score = student[-1]
# 判断成绩的列存在且大于等于60
if score and float(score) >= 60:
# 写入新文件中
writes.writerow(student)
在列表,字典,集合中根据条件筛选数据
列表
from random import randint
l = [randint(-10, 10) for i in range(10)]
# 方法1-列表解析
m = [x for x in l if x >= 0] # [8, 7, 10, 1, 4]
# 方法2-filter()方法
n = filter(lambda x: x >= 0, l)
print(list(n))
字典
# 字典
d = {"student%d" % d: randint(50, 100) for d in range(21)}
# 方法1-字典解析
dc = {k: v for k, v in d.items() if v > 90}
print(dc)
# 方法2-filter()方法
dn = filter(lambda x: x[1] > 90, d.items())
print(dict(dn))
集合
# 集合
s = {randint(-10, 10) for x in range(10)}
# 方法1-集合解析
sm = {x for x in s if x >= 0}
print(sm)
# 方法2-使用filter()方法
sd = filter(lambda x: x >= 0, sm)
print(set(sd))
为元组中的每个元素命名
方法1:使用一系列的数值常量
# 为元组中每一个元素命名
# 方法1:使用一系列的数值常量
NAME, AGE, SEXE, EMAIL = range(4)
stu = ("李四", 16, "man", "pyj.moon@gmail.com")
def get_func(student):
# 通过常量命名
if student[AGE] < 18:
print(student[0] + "的年龄小于18")
if student[SEXE] == "male":
print(student[0] + "的性别为:male")
get_func(student=stu)
方法2:使用枚举类
# 导入int型的枚举类
from enum import IntEnum
class StuentEnum(IntEnum):
NAME = 0
AGE = 1
SEXE = 2
EMAIL = 3
print(stu[StuentEnum.NAME]) # 李四
print(isinstance(StuentEnum.NAME, int)) # True StuentEnum.NAME是int的实例
方法3:使用标准库中collections.namedtuple代替内置tuple
# 方法3:使用标准库中collections.namedtuple代替内置tuple
from collections import namedtuple
# 第一个参数,命名元组的名字;第二个参数,每个元素的名字
s1 = namedtuple("StudentTest", ["name", "age", "sex", "email"])
# 使用命名元组创建一个元组
s2 = s1("李四", 16, "man", "pyj.moon@gmail.com")
print(s2)
# 使用命名元组的方式,访问字段
print(s2.name) # 李四