带有Tkintertable的Python中带有一些空行的CSV文件
我将表格作为任何数据填写,然后导出文件(CSV)。好的,到目前为止。但是当我打开CSV文件时,我注意到填充的行之间有空行。 如何解决?运行代码,填写表格,导出并查看要理解的文件带有Tkintertable的Python中带有一些空行的CSV文件,python,tkinter,tkintertable,Python,Tkinter,Tkintertable,我将表格作为任何数据填写,然后导出文件(CSV)。好的,到目前为止。但是当我打开CSV文件时,我注意到填充的行之间有空行。 如何解决?运行代码,填写表格,导出并查看要理解的文件 from tkintertable import TableCanvas, TableModel from tkinter import * root=Tk() t_frame=Frame(root) t_frame.pack(fill='both', expand=True) table = TableCanvas
from tkintertable import TableCanvas, TableModel
from tkinter import *
root=Tk()
t_frame=Frame(root)
t_frame.pack(fill='both', expand=True)
table = TableCanvas(t_frame, cellwidth=60, thefont=('Arial',12),rowheight=18, rowheaderwidth=30,
rowselectedcolor='yellow', editable=True)
table.show()
root.mainloop()
如果在记事本或其他一些基本文本编辑器中打开CSV文件,您将看到数据在每行数据之间以空格保存。因为EXCEL每行读取一个CSV,所以它总是以这种方式导入EXCEL 您真正能做的只有手动进入CSV并从CSV中删除行,创建一个宏在事后为您清理行,或者编辑发生问题的
tkintertable
库
GitHub fortkintertable
的使用页面似乎没有关于导出到CSV以解决此问题的任何详细信息。我想这只是一个库如何处理数据的问题
即使添加一个运行命令导出的按钮,也会遇到同样的问题
def export_to_csv():
table.exportTable()
Button(root, text='test CSV', command=export_to_csv).pack()
更新:
在做了一些挖掘工作并意识到tkintertable
使用csv
库写入csv后,我在谷歌上搜索了使用csv
库写入csv的相同问题,并找到了这篇文章()。有了那篇文章,我在tkintertable
库中进行了一些挖掘,以找到写作发生的地方,以下是我的发现
在数据之间写入新行似乎是csv
库写入数据的结果。如果我们深入研究,您会发现将表写入CSV的tkintertable
类被称为ExportTableData
。该类别如下:
class TableExporter:
def __init__(self):
"""Provides export utility methods for the Table and Table Model classes"""
return
def ExportTableData(self, table, sep=None):
"""Export table data to a comma separated file"""
parent=table.parentframe
filename = filedialog.asksaveasfilename(parent=parent,defaultextension='.csv',
filetypes=[("CSV files","*.csv")] )
if not filename:
return
if sep == None:
sep = ','
writer = csv.writer(open(filename, "w"), delimiter=sep)
model=table.getModel()
recs = model.getAllCells()
#take column labels as field names
colnames = model.columnNames
collabels = model.columnlabels
row=[]
for c in colnames:
row.append(collabels[c])
writer.writerow(row)
for row in recs.keys():
print(row)
writer.writerow(recs[row])
return
如果我们更新此行:
writer = csv.writer(open(filename, "w"), delimiter=sep)
要包括lineterminator='\n'
,您会发现问题消失了:
writer = csv.writer(open(filename, "w"), delimiter=sep, lineterminator = '\n')
结果:
请记住,编辑库可能不是一个好主意,但对于这种情况,我认为这是您唯一的选择
要访问该类,您需要在tkintertable
库中打开名为Tables\u IO.py
的python文件
如果您使用的是PyCharm,则可以通过按住CTRL键并单击鼠标左键在库文件中导航
首先按住Ctrl键并单击导入名称。然后按住Ctrl键并单击导入名称。然后,您将搜索名为exportTable
的类方法,并在该方法中按住Ctrl键并单击。这将把你带到上面提到的类,你可以编辑它来解决这个问题
def export_to_csv():
table.exportTable()
Button(root, text='test CSV', command=export_to_csv).pack()
请注意不要编辑任何其他内容,因为您可能很容易破坏您的库,如果发生这种情况,您需要重新安装它。如果您在记事本或其他一些基本文本编辑器中打开CSV文件,您将看到数据在每行数据之间以空格保存。因为EXCEL每行读取一个CSV,所以它总是以这种方式导入EXCEL 您真正能做的只有手动进入CSV并从CSV中删除行,创建一个宏在事后为您清理行,或者编辑发生问题的
tkintertable
库
GitHub fortkintertable
的使用页面似乎没有关于导出到CSV以解决此问题的任何详细信息。我想这只是一个库如何处理数据的问题
即使添加一个运行命令导出的按钮,也会遇到同样的问题
def export_to_csv():
table.exportTable()
Button(root, text='test CSV', command=export_to_csv).pack()
更新:
在做了一些挖掘工作并意识到tkintertable
使用csv
库写入csv后,我在谷歌上搜索了使用csv
库写入csv的相同问题,并找到了这篇文章()。有了那篇文章,我在tkintertable
库中进行了一些挖掘,以找到写作发生的地方,以下是我的发现
在数据之间写入新行似乎是csv
库写入数据的结果。如果我们深入研究,您会发现将表写入CSV的tkintertable
类被称为ExportTableData
。该类别如下:
class TableExporter:
def __init__(self):
"""Provides export utility methods for the Table and Table Model classes"""
return
def ExportTableData(self, table, sep=None):
"""Export table data to a comma separated file"""
parent=table.parentframe
filename = filedialog.asksaveasfilename(parent=parent,defaultextension='.csv',
filetypes=[("CSV files","*.csv")] )
if not filename:
return
if sep == None:
sep = ','
writer = csv.writer(open(filename, "w"), delimiter=sep)
model=table.getModel()
recs = model.getAllCells()
#take column labels as field names
colnames = model.columnNames
collabels = model.columnlabels
row=[]
for c in colnames:
row.append(collabels[c])
writer.writerow(row)
for row in recs.keys():
print(row)
writer.writerow(recs[row])
return
如果我们更新此行:
writer = csv.writer(open(filename, "w"), delimiter=sep)
要包括lineterminator='\n'
,您会发现问题消失了:
writer = csv.writer(open(filename, "w"), delimiter=sep, lineterminator = '\n')
结果:
请记住,编辑库可能不是一个好主意,但对于这种情况,我认为这是您唯一的选择
要访问该类,您需要在tkintertable
库中打开名为Tables\u IO.py
的python文件
如果您使用的是PyCharm,则可以通过按住CTRL键并单击鼠标左键在库文件中导航
首先按住Ctrl键并单击导入名称。然后按住Ctrl键并单击导入名称。然后,您将搜索名为exportTable
的类方法,并在该方法中按住Ctrl键并单击。这将把你带到上面提到的类,你可以编辑它来解决这个问题
def export_to_csv():
table.exportTable()
Button(root, text='test CSV', command=export_to_csv).pack()
请注意不要编辑任何其他内容,因为您可能很容易破坏您的库,如果发生这种情况,需要重新安装。我有一个解决方案可以解决您的问题。请看我的最新答案。哇!!!成功了!棒极了!非常感谢你!很乐意帮忙。如果我的帖子解决了你的问题,请选中答案旁边的复选标记,表明你的问题已经解决。请不要在帖子中添加对话材料。人们普遍期望在这里坚持技术写作。谢谢莱昂纳多,请停止编辑文章末尾的闲聊材料。社区一致认为此类材料不属于此网站-。我有一个解决方案可以解决您的问题。请看我的最新答案。哇!!!成功了!棒极了!非常感谢你!很乐意帮忙。如果我的帖子已经解决了你的问题,请选中答案旁边的复选标记,以表明你的问题已经解决。请不要在文章中添加对话材料