起因:
有一个excel表格,它很大,里边有四千多条数据
要求:将身份证号后8位加上姓名拼音的首字母拼接成一个字符串,作为登录系统的用户名,然后将这些数据导入到数据库中。
首先,在导入数据库之前,需要我们拿到身份证后8位和姓名拼音的首字母,然后将他们拼接在一起写入excel表格中。
这么多数据肯定不能是一行一行自己手动去拼接或者是使用excel处理,除非自己闲的蛋疼。
思路其实很简单,下面是写好的代码:
import pypinyin
import xlrd
import xlwt
from pypinyin import Style, lazy_pinyin
def read():
# 读取内容
excel = xlrd.open_workbook(r'F:\Python_WorkSpace\学生信息处理\2017级学生数据表.xlsx')
# print(excel.sheet_names())
sheet1 = excel.sheet_by_name("Sheet1") # 打开页签
excel2 = xlwt.Workbook()
sheet2 = excel2.add_sheet("Sheet2")
# print(sheet1)
nrows = sheet1.nrows # 获取行数
ncols = sheet1.ncols # 获取列数
print(nrows, ncols) # 输出行数和列数
for i in range(0, nrows):
# 获取年级
grade = sheet1.cell(i, 0).value
# 获取专业
major = sheet1.cell(i, 1).value
# 获取性别
sex = sheet1.cell(i, 3).value
# 获取学号
stuid = sheet1.cell(i, 4).value
# 获取学院
college = sheet1.cell(i, 6).value
# 获取身份证后8位
code = sheet1.cell(i, 5).value
code = str(code)
code = code[-8:]
# print(cell)
# 获取名字拼音首字母
name = sheet1.cell(i, 2).value
print(name)
name1 = ''.join(lazy_pinyin(name, style=pypinyin.FIRST_LETTER))
# print(name)
# 拼接id
id = code + name1
print(id)
# 写入excel
sheet2.write(i, 0, grade)
sheet2.write(i, 1, major)
sheet2.write(i, 2, name)
sheet2.write(i, 3, sex)
sheet2.write(i, 4, stuid)
sheet2.write(i, 5, id)
sheet2.write(i, 6, college)
excel2.save('test.csv')
if __name__ == '__main__':
read()
运行结果:
好了,然后就可以直接导入数据库了。
|