拆分中国人姓名中的姓氏和名字
要求:
1、使用Python程序生成名为"stuinfo.csv"的csv文件(300条以上的记录),用于生成下一步操作用的测
试数据。
2、将"stuinfo.csv"文件中的姓名保存到名为“stuname.xlsx”的Excel文件中,Excel工作表中的第1列是
姓,第二列是名
csv文件内容示例:Excel文件内容示例:
序号姓名姓名
202001李四李四
202002范徐春明范徐春明
202003张国林张国林
……………………
3、定义一个名为函数split_ch_name,用来拆分姓名中的姓和名
特别注意:
生成姓名时,
姓名假设是2-4个汉字
2个、3个汉字的姓名,第一个字是姓,其余是名
4个汉字的姓名,第1和第2个字是姓,其余是名
函数的返回结果可以是两个或两个以上的表达式
涉及的内容:
1、csv文件的读和写,序号和姓名中用英文“,”隔开。
2、Excel文件的写(用openpyxl库)和工作簿的保存
3、函数的定义,用return来返回函数的结果
# 导入相关库
import csv
import xlwt
# 创建csv文件
with open('stuinfo.csv', 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(['序号', '姓名'])
writer.writerow(['202001', '李四'])
writer.writerow(['202002', '范徐春明'])
writer.writerow(['202003', '张国林'])
# 创建Excel文件
workbook = xlwt.Workbook()
sheet = workbook.add_sheet('stuname')
sheet.write(0, 0, '姓')
sheet.write(0, 1, '名')
# 读取csv文件
with open('stuinfo.csv', 'r') as csvfile:
reader = csv.reader(csvfile)
for i, row in enumerate(reader):
if i == 0:
continue
name = row[1]
surname = name[0]
givenname = name[1:]
sheet.write(i, 0, surname)
sheet.write(i, 1, givenname)
# 保存Excel文件
workbook.save('stuname.xlsx')
def split_ch_name(name):
# 判断姓名的长度
if len(name) == 2:
# 将姓名拆分为姓和名
surname = name[0]
given_name = name[1]
elif len(name) == 3:
# 将姓名拆分为姓和名
surname = name[0]
given_name = name[1:]
elif len(name) == 4:
# 将姓名拆分为姓和名
surname = name[0:2]
given_name = name[2:]
else:
# 如果姓名长度不符合要求,则返回None
return None
# 返回拆分后的姓和名
return surname, given_name