请求优化Python代码以生成含1000行指定字段的CSV文件
解决生成1000行符合要求的CSV数据问题
修改后的完整代码
import csv import random from datetime import datetime, timedelta # 修正字段名以匹配需求 fields = ['StudentID', 'Score', 'Date', 'Description', 'Ethnicity', 'Subject', 'Hobby', 'Interest'] description_list = ('Delhi','Noida','goa','varansi','Assam','Kerala','Kolkata','Shilong','Bangluru','Gujrat') Ethnicity_list = ('Sikh','Kashmiri','Rajput','Bhramin','Kayasth','Adiwasi','Odia','Maratha') Subject_list = ('微积分', '统计学', '数据库', 'English','Maths','Economics','Hindi','French','Zoology','Chemistry') Hobby_list = ('Reading','Swimming','Cycling','Biking','Gaming','Sleeping','Teaching','Cricket','Shooting','Talking') Interest_list = ('音乐','非虚构作品','辩论','游泳','Watching TV','Esports','Football','MotoRacing','Painting','Sketching') # 生成1000行数据 data = [] today = datetime.now() for student_id in range(1, 1001): # 生成最近20天内的随机日期 days_ago = random.randint(0, 19) random_date = today - timedelta(days=days_ago) formatted_date = random_date.strftime("%d/%m/%Y") row = [ student_id, random.randint(40, 100), formatted_date, random.choice(description_list), random.choice(Ethnicity_list), random.choice(Subject_list), random.choice(Hobby_list), random.choice(Interest_list) ] data.append(row) filename = "assignment.csv" with open(filename, 'w', newline='', encoding='utf-8') as csvfile: csvwriter = csv.writer(csvfile) csvwriter.writerow(fields) csvwriter.writerows(data)
关键修改说明
- 修复语法错误:原代码
import csv import random语法错误,拆分为两个独立导入,同时新增datetime模块处理日期。 - 字段名对齐需求:修正了字段名拼写(如
Ethinicity→Ethnicity、Intrest→Interest),并调整为需求中的标准命名(Student Id→StudentID)。 - 生成1000行唯一数据:通过
range(1,1001)循环生成StudentID,确保1到1000的唯一性,避免原代码中randint可能出现的重复问题。 - 完善随机日期逻辑:基于当前日期,通过
timedelta生成最近20天内的随机日期,并格式化为dd/mm/yyyy格式。 - 优化CSV写入:添加
newline=''避免Windows下生成多余空行,指定encoding='utf-8'确保中文内容正常存储。
内容的提问来源于stack exchange,提问作者Shivam srivastav
相关产品推荐
相关产品推荐

