python随机生成数字存入文件中_用python在excel中读取与生成随机数写入excel中

今天是我第一次发博客,就关于python在excel中的应用作为我的第一篇吧。

具体要求是:在一份已知的excel表格中读取学生的学号与姓名,再将这些数据放到新的excel表中的第一列与第二列,最后再生成随机数作为学生的考试成绩。

首先要用到的数据库有:xlwt,xlrd,random这三个数据库。

命令如下:

import xlwt

import xlrd

import random

现有一份表格内容如下图:

1271817-20180103200202753-1973354207.png

现在我们需要提取这其中的B1—C14。

(提示:在对这份电子表格进行操作的时候,要使用到这个电子表格的地址,即表格的储存位置。)

excel=xlrd.open_workbook(G:\python\新建文件夹\表1.xlsx') #打开并读取表格

sheet=excel.sheets()[0] #在原表1中提取第一页中的数据。对excel进行处理时,行列页都是从0开始进行计算

wb=xlwt.Workbook() #创立一个新的excel表格

ws =wb.add_sheet('成绩单') #第一页命名为成绩单

(如果要进行多页操作,要将学号姓名放到两页excel表格中的话可以如下操作:

ws1=wb.add_sheet('1班成绩单')

ws2=wb.add_sheet('2班成绩单')

创建两个list:

a=[]

b=[]

(这两个list是用来临时存放学号与姓名的)

for i in range (1,14): #在大二下学期15级成绩汇总.xlsx表中提取出姓名与学号

a .append(sheet.row_values(i,1,2)) #提取第i行的第1个数,即这个命令抽取的是表中的学号列

b .append(sheet.row_values(i,2,3)) #提取第i行的第2个数,即这个命令抽取的是表中的姓名列

在此特比注意:excel中行与列均是从0开始计算的,即表中第1行第1列在进行处理运行时为第0行第0列,表中第2行第2列在进行处理运行时为第1行第1列。表中sheet也是从0开始算起。

解释一下: a .append(sheet.row_values(i,1,2))在经过几次错误后我发现,i是指第i行,1,2这两个是一段范围。即取的是第1个值,按照上面注意的说,就是表中第二个框格的值。

如果对此有疑问可以试一下将1,2修改一个值进行尝试。

for n in range(13): #将学号与姓名写入新建的表格中,并写在第1页,人数为13人。

ws.write(n,0,a[n][0])

ws.write(n,1,b[n][0])

提醒:为什么这里要用a[n][0]而不是a[n]?这个是我自己水平有限制的原因。因为在提取表中数据放入a,b两个list中他们的形式是:a=[[111],[112],[113]……]的形式,对于这一点的解决方法我还没想出来,因此只能靠a[n][0]这样的形式来解决。因为在写入新的表格过程中不能将list整个放入框格中,只能放入文本或者其他框格允许的格式。如果你们有什么比较好的方法可以提出来我们一起交流学习,感激不尽。

for q in range(13): #对1班所有人的成绩进行随机抽取数据

ran=random.randint(60,91)

if ran<=70:

ws1.write(q,2,'及格({0})'.format(ran))

if ran>70 and ran<=80:

ws1.write(q,2,'中等({0})'.format(ran))

if ran>80 and ran<=90:

ws1.write(q,2,'良好({0})'.format(ran))

wb.save('15资环1,2班地理信息系统实习成绩.xls') #将新建的表格保存为'15资环1,2班地理信息系统实习成绩.xls'文件

以下代码是由两个班的数据进行运算。

原来的表格为:

1271817-20180103205319378-549473700.png

1 import xlwt #引入xlwt数据库用来将数据写入excel文档中

2 import xlrd #引入xlrd数据库用来从excel中读取数据

3 import random #引入random数据库给出随机数

4

5 excel=xlrd.open_workbook('G:\python\新建文件夹\表1.xlsx') #从一个已有学号与姓名的excel表格中提取出对应的学号和姓名

6

7 sheet=excel.sheets()[0]8 wb=xlwt.Workbook() #创立一个新的excel表格

9 ws1=wb.add_sheet('1班成绩单') #第一页命名为1班成绩单

10 ws2=wb.add_sheet('2班成绩单') #第一页命名为2班成绩单

11

12

13 a1=[] #表1中的学号列

14 a2=[] #表2中的学号列

15 b1=[] #表1中的姓名列

16 b2=[] #表2中的姓名列

17

18 for i in range (1,14): #表1.xlsx表中提取出1班的姓名与学号

19 a1.append(sheet.row_values(i,1,2))20 b1.append(sheet.row_values(i,2,3))21

22

23 for j in range (14,33): #在表1.xlsx表中提取出1班的姓名与学号

24 a2.append(sheet.row_values(j,1,2))25 b2.append(sheet.row_values(j,2,3))26

27 for n in range(13): #将1班学号与姓名写入新建的表格中,并写在第1页.1班人数为13人

28 ws1.write(n,0,a1[n][0])29 ws1.write(n,1,b1[n][0])30 for m in range(19): #将2班学号与姓名写入新建的表格中,并写在第2页.2班人数为19人

31 ws2.write(m,0,a2[m][0])32 ws2.write(m,1,b2[m][0])33

34 for q in range(13): #对1班所有人的成绩进行随机抽取数据

35 ran=random.randint(60,91) #分数为60-90之间

36 if ran<=70:37 ws1.write(q,2,'及格({0})'.format(ran)) #以下表示在各分数段的等级

38 if ran>70 and ran<=80:39 ws1.write(q,2,'中等({0})'.format(ran))40 if ran>80 and ran<=90:41 ws1.write(q,2,'良好({0})'.format(ran))42

43 for d in range(19): #对2班所有人的成绩进行随机抽取数据

44 ran=random.randint(60,91)45 if ran<=70:46 ws2.write(d,2,'及格({0})'.format(ran))47 if ran>70 and ran<=80:48 ws2.write(d,2,'中等({0})'.format(ran))49 if ran>80 and ran<=90:50 ws2.write(d,2,'良好({0})'.format(ran))51

52

53

54 wb.save('15资环1,2班地理信息系统实习成绩.xls') #将新建的表格保存为'15资环1,2班地理信息系统实习成绩.xls'文件

55

结果如下:

1271817-20180103210327643-1544014430.png

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,使用Python爬取新浪微博评论数据需要以下步骤: 1. 登录微博开放平台,创建应用并获取App Key和App Secret。 2. 使用App Key和App Secret获取access_token。 3. 使用access_token获取微博的API接口。 4. 使用API接口获取微博评论数据。 5. 将数据存入数据库或写入csv文件。 下面是一个简单的示例代码,演示如何使用Python爬取新浪微博评论数据并存入数据库: ```python import os import sys import time import json import pymysql import requests from urllib.parse import quote_plus from datetime import datetime from dotenv import load_dotenv load_dotenv() app_key = os.getenv("APP_KEY") app_secret = os.getenv("APP_SECRET") access_token = os.getenv("ACCESS_TOKEN") # 数据库配置 db_host = os.getenv("DB_HOST") db_port = os.getenv("DB_PORT") db_user = os.getenv("DB_USER") db_password = os.getenv("DB_PASSWORD") db_name = os.getenv("DB_NAME") # 连接数据库 db = pymysql.connect(host=db_host, port=int(db_port), user=db_user, password=db_password, db=db_name, charset="utf8mb4") cursor = db.cursor() # 微博接口配置 base_url = "https://api.weibo.com/2/comments/show.json" max_count = 200 since_id = None max_id = None while True: # 构造API请求参数 params = { "access_token": access_token, "source": app_key, "count": max_count, "since_id": since_id, "max_id": max_id, } # 发送API请求 response = requests.get(base_url, params=params) if response.status_code != 200: print("Failed to get comments data from Weibo API.") sys.exit(1) # 解析API响应数据 data = json.loads(response.text) comments = data["comments"] # 遍历评论数据并存入数据库 for comment in comments: created_at = datetime.strptime(comment["created_at"], "%a %b %d %H:%M:%S +0800 %Y") text = comment["text"] user_id = comment["user"]["id"] user_name = comment["user"]["name"] mid = comment["mid"] sql = "INSERT INTO comments (created_at, text, user_id, user_name, mid) VALUES (%s, %s, %s, %s, %s)" try: cursor.execute(sql, (created_at, text, user_id, user_name, mid)) db.commit() except: db.rollback() # 更新API请求参数 if len(comments) == 0: break else: since_id = comments[0]["id"] max_id = comments[-1]["id"] # 控制API请求频率 time.sleep(5) ``` 以上代码使用了dotenv库来读取环境变量,因此需要在项目根目录下创建一个名为“.env”的文件,并在其添加以下配置项: ```text APP_KEY=your_app_key APP_SECRET=your_app_secret ACCESS_TOKEN=your_access_token DB_HOST=your_db_host DB_PORT=your_db_port DB_USER=your_db_user DB_PASSWORD=your_db_password DB_NAME=your_db_name ``` 注意:上述代码的“comments”和“comments_data”均为示例数据库表名,需要根据实际情况修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值