<p>我做了一个程序,可以打开一个.csv,并且(希望)完全符合您的要求:</p>
<pre><code>import tkinter as tk
from tkinter import filedialog
import os
import csv as csv_package
def fileopen():
GUI=tk.Tk()
filepath=filedialog.askopenfilename(parent=GUI,
title='Select file')
(GUI).destroy()
return (filepath)
filepath = fileopen()
filepath = os.path.normpath(filepath)
data = []
with open(filepath) as fp:
reader = csv_package.reader(fp, skipinitialspace=True)
for row in reader:
data.append(row)
#make spreadsheet rows consistent length, based on longest row
max_len_row = len(max(data,key=len))
for row in data:
if len(row) < max_len_row:
append_number = max_len_row - len(row)
for i in range(append_number):
row.append('')
#create dictionary of number of columns
longest = {}
for times in range(len(data[0])):
longest [times] = 0
#get longest entry for each column
for sublist_index,sublist in enumerate(data):
for column_index,element in enumerate(sublist):
if longest [column_index] < len(element):
longest [column_index] = len(element)
#make each column as long as the longest entry
for sublist_index,sublist in enumerate(data):
for column_index,element in enumerate(sublist):
if len(element) < longest [column_index]:
amount_to_append = longest [column_index] - len(element)
data [sublist_index][column_index] += (' ' * amount_to_append)
with open(filepath, 'w', newline='') as csvfile:
writer = csv_package.writer(csvfile)
for row in data:
writer.writerow(row)
path, ext = os.path.splitext(filepath)
os.rename(filepath, path + '.txt')
</code></pre>
<p>在此之前:</p>
^{pr2}$
<p>之后:</p>
<pre><code>Products,Technologies,Region1,Region2,Region3
Prod1 ,Tech1 ,16 ,0 ,12
Prod2 ,Tech2 ,0 ,12 ,22
Prod3 ,Tech3 ,22 ,0 ,36
</code></pre>