用面向对象的思想写python清洗excel中固定列中含有具体字符串的行,并输出成新的excel文件
时间: 2024-03-16 14:41:00 浏览: 64
好的,我可以为你解答这个问题。首先,我们需要使用Python中的openpyxl库来读取和写入Excel文件。然后,我们可以使用面向对象的思想来设计一个ExcelCleaner类,这个类包含以下几个方法:
1. `__init__(self, input_file, output_file, target_column, target_string)`:这个方法用于初始化ExcelCleaner对象,传入参数包括输入文件名、输出文件名、目标列号和目标字符串。
2. `clean(self)`:这个方法用于清洗Excel文件,即读取输入文件中的数据,找到固定列中含有目标字符串的行,并将这些行写入输出文件中。
下面是一个示例代码,可以帮助你更好地理解:
```python
from openpyxl import load_workbook
from openpyxl import Workbook
class ExcelCleaner:
def __init__(self, input_file, output_file, target_column, target_string):
self.input_file = input_file
self.output_file = output_file
self.target_column = target_column
self.target_string = target_string
def clean(self):
# 读取输入文件
wb = load_workbook(filename=self.input_file)
ws = wb.active
# 写入输出文件
wb_out = Workbook()
ws_out = wb_out.active
# 写入表头
header = [cell.value for cell in ws[1]]
ws_out.append(header)
# 遍历每一行,找到含有目标字符串的行
for row in ws.iter_rows(min_row=2):
if row[self.target_column-1].value and self.target_string in row[self.target_column-1].value:
# 将符合条件的行写入输出文件
row_values = [cell.value for cell in row]
ws_out.append(row_values)
# 保存输出文件
wb_out.save(self.output_file)
```
使用方法:
```python
input_file = "input.xlsx"
output_file = "output.xlsx"
target_column = 2
target_string = "hello"
cleaner = ExcelCleaner(input_file, output_file, target_column, target_string)
cleaner.clean()
```
其中,`input_file`是输入文件名,`output_file`是输出文件名,`target_column`是目标列号,`target_string`是目标字符串。这个例子中,我们读取了名为`input.xlsx`的Excel文件,找到了第2列中含有`"hello"`字符串的行,并将这些行写入名为`output.xlsx`的新Excel文件中。
阅读全文