如何重写 csv.writer,支持 多字符delimiter
时间: 2024-11-09 22:30:27 浏览: 6
在Python中,`csv.writer`是`csv`模块提供的用于写入CSV文件的标准工具,它默认使用逗号作为字段分隔符。如果你想支持多字符delimiter,你可以创建一个自定义的类来扩展`csv.writer`,覆盖其内部的行为以便接受自定义的delimiter。这里是一个简单的示例:
```python
import csv
class CustomWriter(csv.writer):
def __init__(self, fileobj, delimiter=',', dialect=csv.excel, *args, **kwds):
super().__init__(fileobj, dialect=dialect, *args, **kwds)
self.delimiter = delimiter
def writerow(self, row):
# 使用自定义delimiter替换默认的逗号
data = [str(field).replace(',', self.delimiter) for field in row]
super().writerow(data)
# 使用示例
with open('custom_delim.csv', 'w', newline='') as csvfile:
custom_writer = CustomWriter(csvfile, delimiter='|')
custom_writer.writerow(['Name', 'Age', 'Email'])
custom_writer.writerow(['Alice', '30', 'alice@example.com'])
```
在这个例子中,我们创建了一个名为`CustomWriter`的新类,它在初始化时接收一个额外的`delimiter`参数,并在`writerow`方法中将数据转换为指定的delimiter。然后,你可以像使用标准`csv.writer`一样使用这个定制化的类。
阅读全文