修改代码,csv文件里面的值会居中并且每一列的长度会根据输入的值自适应
时间: 2024-04-12 21:31:12 浏览: 90
要在CSV文件中使值居中并使每列长度自适应,你可以使用Python的字符串格式化功能。以下是修改后的示例代码:
```python
import csv
filename = "data.csv"
def add_row(values):
with open(filename, mode='a', newline='') as file:
writer = csv.writer(file)
writer.writerow(values)
def get_column_widths(data):
column_widths = []
for column in zip(*data):
max_length = max(len(str(value)) for value in column)
column_widths.append(max_length)
return column_widths
def format_row(row, column_widths):
formatted_row = []
for value, width in zip(row, column_widths):
formatted_value = str(value).center(width)
formatted_row.append(formatted_value)
return formatted_row
# 添加新行
values1 = ["Value 1.1", "Value 1.2", "Value 1.3"]
add_row(values1)
values2 = ["Value 2.1", "Value 2.2", "Value 2.3"]
add_row(values2)
values3 = ["Value 3.1", "Value 3.2", "Value 3.3"]
add_row(values3)
# 读取CSV文件并格式化输出
with open(filename, 'r') as file:
reader = csv.reader(file)
data = list(reader)
column_widths = get_column_widths(data)
for row in data:
formatted_row = format_row(row, column_widths)
print(' | '.join(formatted_row))
```
在上述代码中,我们定义了一个`get_column_widths`函数,用于根据输入数据计算每列的最大宽度。然后,我们定义了一个`format_row`函数,用于将每个值居中并根据列宽格式化。最后,我们读取CSV文件并使用这些函数来格式化输出。
请注意,上述代码中使用了`print`函数来输出格式化后的行。如果你想将格式化后的行写入新的CSV文件或原始CSV文件,请相应地调整代码。
阅读全文