Open roberthsu2003 opened 2 weeks ago
import csv
with open ('lesson2_1008\hw1\student.csv' , encoding='utf-8' , newline='') as file:
reader = csv.reader(file)
rdict = list(csv.DictReader(file))
for i in rdict:
print(i)
l1 = []
print('Age over 25')
for i in rdict:
if int(i['age']) > 25:
print(i)
l1.append(i)
with open('lesson2_1008\hw1\AgeOver25.csv','w',encoding='utf-8' , newline='') as file2:
filenames = ['name' , 'age' , 'city']
dict_writer = csv.DictWriter(file2,fieldnames=filenames)
dict_writer.writeheader()
for i in l1:
dict_writer.writerow(i)
{'name': 'John', 'age': '23', 'city': 'New York'}
{'name': 'Jane', 'age': '29', 'city': 'Los Angeles'}
{'name': 'Doe', 'age': '25', 'city': 'Chicago'}
{'name': 'Anna', 'age': '22', 'city': 'Houston'}
Age over 25
{'name': 'Jane', 'age': '29', 'city': 'Los Angeles'}
name,age,city
Jane,29,Los Angeles
import csv
with open( 'student.csv', encoding='utf-8') as file1:
reader = csv.reader(file1)
l1 = []
for i in reader:
l1.append(i)
l2 = []
for i in range(1,len(l1)):
if int(l1[i][1]) > 25:
l2.append(l1[i])
print('{' , end='')
for j in range(len(l1[0])):
print(l1[0][j]+':',end=' ')
print(l1[i][j] , end='')
if j <2:
print(',',end=' ')
print('}')
with open('ageover25.csv', 'w',encoding='utf-8') as file:
for i in l2:
for j in i:
file.write(j)
file.write(',')
file.write('\n')
{name: John, age: 23, city: New York}
{name: Jane, age: 29, city: Los Angeles}
{name: Doe, age: 25, city: Chicago}
{name: Anna, age: 22, city: Houston}
Jane,29,Los Angeles,
code
import csv
with open('student.csv',encoding="utf-8") as file:
csvReader = csv.DictReader(file)
readlist =[]
readlist2 =[]
for row in csvReader:
readlist.append(dict(row))
for i in readlist:
print(i)
print()
for i in readlist:
if int(i['age'])>25:
readlist2.append(i)
print(readlist2)
with open('filtered_data.csv',"w",encoding="utf-8") as file:
www = csv.writer(file)
www.writerow(readlist2)
解答:
import csv
with open('student.csv',encoding="utf-8",newline='') as file:
reader_dict = list(csv.DictReader(file))
print(reader_dict)
for item in reader_dict:
print(item)
new_list = []
for item in reader_dict:
if int(item['age']) > 25:
print(item)
new_list.append(item)
with open('filtered.csv',mode='w',encoding='utf-8',newline='') as f: filename = ['name','age','city'] dict_wter = csv.DictWriter(f,fieldnames=filename) dict_wter.writeheader()#寫入抬頭 for item in new_list: dict_wter.writerow(item)#寫入內容
import csv
students = []
with open('student.csv', encoding='utf-8-sig') as file:
csv_reader = csv.reader(file)
#讀取行標題
headers = next(csv_reader)
#逐行讀取數據
for row in csv_reader:
# print(row)
# student.append(row)
# 使用zip函數將headers和row配對,轉換成字典
student_dict = dict(zip(headers,row))
students.append(student_dict)
for student in students:
print(student)
up_25 = [student for student in students if int(student['age'])>25]
print("年齡大於25歲的人:")
for student in up_25:
print(student)
print(f"\n共有{len(up_25)}人年齡大於25歲")
with open('up_25.csv',mode='w',encoding='utf-8-sig') as file:
writer = csv.DictWriter(file,fieldnames=['name','age','city'])
writer.writeheader()
for student in up_25:
writer.writerow(student)
import csv
# Specify the path to your CSV file
file_path = 'student.csv'
with open(file_path, mode='r', encoding='utf-8') as file:
# csvReader = csv.reader(file)
csvReader = csv.DictReader(file)
# Iterate through rows and print each one
for row in csvReader:
print(row)
## Q1: Output
{'name': 'John', 'age': '23', 'city': 'New York'}
{'name': 'Jane', 'age': '29', 'city': 'Los Angeles'}
{'name': 'Doe', 'age': '25', 'city': 'Chicago'}
{'name': 'Anna', 'age': '22', 'city': 'Houston'}
## Q2: 篩選內容:年齡大於25的人
## Q2 ----- Code 1 -----
# Specify the path to your CSV file
file_path = 'student.csv'
with open(file_path, mode='r', encoding='utf-8') as file:
csvReader = csv.DictReader(file)
for row in csvReader:
if int(row['age']) > 25:
print(f"{row['name']},{row['age']},{row['city']}")
## Q2: code 1 output
Jane,29,Los Angeles
## Q2 ----- Code 2 -----
# Sample data
Student_Dict = [
{'name': 'John', 'age': '23', 'city': 'New York'},
{'name': 'Jane', 'age': '29', 'city': 'Los Angeles'},
{'name': 'Doe', 'age': '25', 'city': 'Chicago'},
{'name': 'Anna', 'age': '22', 'city': 'Houston'}
]
# Iterate through the list and print entries with age greater than 25
for person in Student_Dict:
if int(person['age']) > 25:
print(person)
## Q2: Code2 Output
{'name': 'Jane', 'age': '29', 'city': 'Los Angeles'}
## Q3: 輸出篩選後的結果儲存至新 CSV 文件(filtered_data.csv)
## Q3 ----- Code -----
import csv
# Data to be exported
data = {'name': 'Jane', 'age': '29', 'city': 'Los Angeles'}
# Specify the CSV file name
file_name = 'filtered_data.csv'
# Open the file in write mode and create a CSV writer
with open(file_name, 'w', newline='') as csvfile:
# return a view of the keys, which are 'name', 'age', and 'city'.
writer = csv.DictWriter(csvfile, fieldnames=data.keys())
# Write the header
writer.writeheader()
# Write the data
writer.writerow(data)
print(f"Data exported to {file_name}")
## Q3: Output message
Data exported to filtered_data.csv
## Q3: Output
### The content of filtered_data.csv
name,age,city
Jane,29,Los Angeles
import csv
with open('student.csv', 'r') as file: csv_reader = csv.DictReader(file) data = list(csv_reader)
for row in data: print(row)
filtered_data = [row for row in data if int(row['age']) > 25]
print("\n篩選後的結果:") for row in filtered_data: print(row)
with open('filtered_data.csv', 'w', newline='') as file: fieldnames = ['name', 'age', 'city'] csv_writer = csv.DictWriter(file, fieldnames=fieldnames)
csv_writer.writeheader()
csv_writer.writerows(filtered_data)
print("\n篩選後的數據已儲存到 filtered_data.csv")
import csv
with open("student.csv",encoding="utf-8", newline = "") as file:
rsts = list(csv.DictReader(file))
# print(type(rsts))
for i in rsts:
print(i)
rstl = []
for i in rsts:
if int(i["age"]) > 25:
rstl.append(i)
輸出:
{'name': 'John', 'age': '23', 'city': 'New York'}
{'name': 'Jane', 'age': '29', 'city': 'Los Angeles'}
{'name': 'Doe', 'age': '25', 'city': 'Chicago'}
{'name': 'Anna', 'age': '22', 'city': 'Houston'}
print(rstl)
with open('filtered_data.csv',mode='w',encoding='utf-8',newline='') as f:
fieldnames = ['name', 'age','city']
dict_writer = csv.DictWriter(f,fieldnames=fieldnames)
dict_writer.writeheader()
for item in rstl:
dict_writer.writerow(item)
得到:
[{'name': 'Jane', 'age': '29', 'city': 'Los Angeles'}]
name , Jane ,age , 29 ,city , Los Angeles ,
import csv
f=[]
with open('student.csv',encoding='utf-8') as file:
csvReader=csv.DictReader(file)
for row in csvReader:
print(row)
if int(row['age'])>25:
f.append(row)
print('\n篩選結果')
for student in f:
print(student)
{'name': 'John', 'age': '23', 'city': 'New York'} {'name': 'Jane', 'age': '29', 'city': 'Los Angeles'} {'name': 'Doe', 'age': '25', 'city': 'Chicago'} {'name': 'Anna', 'age': '22', 'city': 'Houston'}
篩選結果 {'name': 'Jane', 'age': '29', 'city': 'Los Angeles'}
李啟民的Lesson 2 homework
import csv
list1=[]
list2=[]
with open('student.csv',encoding='utf-8') as file:
csvReader = csv.DictReader(file)
for row in csvReader:
list1.append(dict(row))
for i in list1:
print(i)
- **篩選內容:年齡大於25的人**
for i in list1: if int(i['age']) > 25: list2.append(i) print(list2)
- **輸出篩選後的結果儲存至新 CSV 文件(filtered_data.csv)**
with open('filtered_data.csv', mode='w', encoding='utf-8', newline=' ') as f: fieldnames = ['name', 'age', 'city'] dict_writer = csv.DictWriter(f, fieldnames=fieldnames) dict_writer.writeheader() for item in list2: dict_writer.writerow(item)
import csv
with open('student.csv',encoding='UTF-8') as file:
stu_data=csv.reader(file)
key=next(stu_data)#用next function將stu_data中的第一列內容讀取並做成新列,字典格式將以key[]列的索引值作為鍵
# print(type(stu_data))
dict_students=[]
for row in stu_data:
students={key[i]:value for i, value in enumerate(row)}#用enumerate函式在一個row裡面按照item index,將key的索引值和value的索引值依序排列。
print(students)
dict_students.append(students)#將student字典條目存入dict_student串列中以待提取
for students in dict_students:#由dict_students串列中的students元素去尋找
age=int(students['age'])#age鍵中的value在字典中為str,轉為int之後指派給age變數
stu_over25=[]
if age > 25:
print(students)
stu_over25.append(students)#篩選出25歲以上的學生之後,存入stu_over25串列中
with open('stu_over25.csv','w',newline='',encoding='UTF-8') as csvfile:#讀寫檔案都用open
fieldnames=['Name','age','add','hobbit']#使用csv.DictWriter,先定義fieldnames作為首行
writer=csv.DictWriter(csvfile,fieldnames=fieldnames)
writer.writeheader()
for students in stu_over25:
writer.writerow(students)
import csv
with open('student.csv',encoding='utf-8',newline='') as file:
csv_reader=csv.DictReader(file)
for row in csv_reader:
print(row)
with open('student.csv',encoding='utf-8',newline='') as file:
csv_reader=csv.DictReader(file)
filtered_data = [row for row in csv_reader if int(row['age']) > 25]
for row in filtered_data:
print(row)
with open('filtered_data.csv','w',encoding='utf-8',newline='') as file:
fieldnames = ['name', 'age', 'city']
csv_writer = csv.DictWriter(file, fieldnames=fieldnames)
csv_writer.writeheader()
csv_writer.writerows(filtered_data)
來源:student.csv