现有txt文件“电影信息.txt”,其中三列分别为电影名称、导演和演员表,之间用分号分隔(同一个电影可能会有多个演员,每个演员姓名之间使用逗号分隔;同一部电影也可能有多个导演,多个导演之间用逗号分隔)任务一:数据预处理 将txt格式的电影数据文件转换为xlsx格式,并按指定要求填入sheet,具体要求如下: 1. 读取电影数据文件“电影信息.txt”,文件中每行为一部电影的信息,电影信息中包括三个字段,以分号(;)分隔,三个字段分别为电影名称、导演和演员表。 2. 首先创建一个新的Excel文件,文件名为“电影信息统计.xlsx”。在该文件中创建一个名为“电影信息统计”的sheet。 3. 在“电影信息统计”sheet中,第一列为电影编号,第二列为电影名称,第三列为导演名称,第四列为演员名单。如果同一部电影有多个导演或演员,则在同一单元格中以逗号(,)分隔。 4. 文本中若有重复的电影,则只保留其第一次出现的信息。 5. 在完成数据填写后,保存Excel文件,关闭文件。要求对以上任务定义函数
时间: 2024-02-12 10:04:21 浏览: 77
好的,根据您的要求,我可以为您定义一个名为“txt_to_xlsx”的函数。具体实现步骤如下:
```
import openpyxl
def txt_to_xlsx(txt_file_path, xlsx_file_path):
# 读取txt文件
with open(txt_file_path, 'r', encoding='utf-8') as f:
txt_data = f.readlines()
# 创建新的Excel文件,建立名为“电影信息统计”的sheet
wb = openpyxl.Workbook()
ws = wb.active
ws.title = "电影信息统计"
# 初始化电影编号
movie_count = 1
# 创建字典,用于去重
movies_dict = {}
# 遍历txt数据,将数据填入Excel表格
for line in txt_data:
# 分割每行数据,获取电影名称、导演和演员表
movie_info = line.strip().split(';')
movie_name = movie_info[0]
directors = movie_info[1].split(',')
actors = movie_info[2].split(',')
# 判断电影是否已经存在,如果已经存在则跳过
if movie_name in movies_dict:
continue
else:
movies_dict[movie_name] = True
# 将电影信息填入Excel表格
ws.cell(row=movie_count, column=1, value=movie_count)
ws.cell(row=movie_count, column=2, value=movie_name)
ws.cell(row=movie_count, column=3, value=','.join(directors))
ws.cell(row=movie_count, column=4, value=','.join(actors))
# 更新电影编号
movie_count += 1
# 保存Excel文件并关闭
wb.save(xlsx_file_path)
wb.close()
```
这个函数可以接受两个参数:txt文件路径和xlsx文件路径,用于指定输入和输出文件的位置。您只需要将这个函数复制到您的代码中,并调用它即可完成文件的转换和预处理。
阅读全文