这个代码怎么写txt格式的电影数据文件转换为xlsx格式,并按指定要求填入sheet,具体要求如下: 1. 读取电影数据文件“电影信息.txt”,文件中每行为一部电影的信息,电影信息中包括三个字段,以分号(;)分隔,三个字段分别为电影名称、导演和演员表。 2. 首先创建一个新的Excel文件,文件名为“电影信息统计.xlsx”。在该文件中创建一个名为“电影信息统计”的sheet。 3. 在“电影信息统计”sheet中,第一列为电影编号,第二列为电影名称,第三列为导演名称,第四列为演员名单。如果同一部电影有多个导演或演员,则在同一单元格中以逗号(,)分隔。 4. 文本中若有重复的电影,则只保留其第一次出现的信息。 5. 在完成数据填写后,保存Excel文件,关闭文件。
时间: 2024-02-12 20:04:48 浏览: 52
这是一个比较复杂的操作,需要使用Python中的一些库来操作Excel文件。以下是代码实现的步骤:
1. 导入所需的库:pandas、openpyxl
```python
import pandas as pd
from openpyxl import Workbook
```
2. 读取txt格式的电影数据文件“电影信息.txt”,并将其转换为DataFrame格式,设置列名为“电影名称”、“导演”、“演员表”。
```python
df = pd.read_csv("电影信息.txt", sep=";", header=None,
names=["电影名称", "导演", "演员表"])
```
3. 去除电影名称重复的行,并为每部电影添加一个编号。
```python
df.drop_duplicates(subset=["电影名称"], keep="first", inplace=True)
df.insert(0, "电影编号", range(1, len(df) + 1))
```
4. 切分演员表中的演员姓名,并将其合并为一个字符串,用逗号分隔。
```python
df["演员表"] = df["演员表"].str.split("/")
df["演员表"] = df["演员表"].apply(lambda x: ",".join(x))
```
5. 创建一个新的Excel文件,文件名为“电影信息统计.xlsx”,并在该文件中创建一个名为“电影信息统计”的sheet。
```python
wb = Workbook()
ws = wb.create_sheet("电影信息统计", 0)
```
6. 将DataFrame中的数据逐行写入Excel文件中。
```python
for r in dataframe_to_rows(df, index=False, header=True):
ws.append(r)
```
7. 将Excel文件保存,关闭文件。
```python
wb.save("电影信息统计.xlsx")
wb.close()
```
完整代码如下:
```python
import pandas as pd
from openpyxl import Workbook
from openpyxl.utils.dataframe import dataframe_to_rows
df = pd.read_csv("电影信息.txt", sep=";", header=None,
names=["电影名称", "导演", "演员表"])
df.drop_duplicates(subset=["电影名称"], keep="first", inplace=True)
df.insert(0, "电影编号", range(1, len(df) + 1))
df["演员表"] = df["演员表"].str.split("/")
df["演员表"] = df["演员表"].apply(lambda x: ",".join(x))
wb = Workbook()
ws = wb.create_sheet("电影信息统计", 0)
for r in dataframe_to_rows(df, index=False, header=True):
ws.append(r)
wb.save("电影信息统计.xlsx")
wb.close()
```
运行该代码后,会生成一个名为“电影信息统计.xlsx”的文件,其中包含一个名为“电影信息统计”的sheet,其中包含了按要求填写的电影信息。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![bas](https://img-home.csdnimg.cn/images/20210720083646.png)
![bas](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)