import random |
import csv |
# 生成随机csv表文件,做实验用 |
def gen_csv(filename): |
# csv文件数据 |
datas = [] |
# csv文件表头 |
data_header = [ '组名' ] |
# 每一组最多可以有10个组员 |
for i in range ( 10 ): |
data_header.append( '组员' + str (i)) |
# 先加表头 |
datas.append(data_header) |
# 有10行数据 |
for i in range ( 10 ): |
# 这一行数据 |
row_data = [] |
row_data.append( '组' + str (i)) |
# 组员数量随机 |
for j in range (random.randint( 3 , 10 )): |
# 组员名称随机 |
row_data.append( str (random.randint( 0 , 1000 ))) |
# 向表中添加数据行 |
datas.append(row_data) |
print ( '您生成了数据' ) |
print (datas) |
# 写出csv文件 |
with open (filename, 'w' , newline = '') as f: |
writer = csv.writer(f) |
for row in datas: |
writer.writerow(row) |
print ( '生成模拟表' ) |
# 将组信息csv文件转换为2列状的csv文件 |
def from_csv_to_2col_csv(filename): |
# 读入csv文件转换出组信息列表 |
with open (filename) as f: |
reader = csv.reader(f) |
groups = list (reader) |
# 对每一行组信息数据进行操作 |
new_datas = [[ '组名' , '组员' ]] |
# 遍历每一组 |
for group in groups[ 1 :]: |
# 遍历每个成员 |
for member in group[ 1 :]: |
# 组成对应关系 |
new_row_data = [] |
new_row_data.append(group[ 0 ]) |
new_row_data.append(member) |
new_datas.append(new_row_data) |
print ( '转换来的数据' ) |
print (new_datas) |
with open ( 'new_groups.csv' , 'w' , newline = '') as f: |
writer = csv.writer(f) |
for row in new_datas: |
writer.writerow(row) |
print ( '生成目标表' ) |
if __name__ = = '__main__' : |
filename = 'groups.csv' |
gen_csv(filename) |
from_csv_to_2col_csv(filename) |