Excel 用python中的csvwriter编写单元格或行
我想将结果列表导出到.xls文件中,但结果不符合预期 我的代码是:Excel 用python中的csvwriter编写单元格或行,excel,python-3.x,csv,Excel,Python 3.x,Csv,我想将结果列表导出到.xls文件中,但结果不符合预期 我的代码是: file = filedialog.asksaveasfile(mode='w', defaultextension=".xls") if file: csvWriter = csv.writer(file, dialect='excel') for ele in arg: lista = list(ele) csvWriter.writerow(lista)
file = filedialog.asksaveasfile(mode='w', defaultextension=".xls")
if file:
csvWriter = csv.writer(file, dialect='excel')
for ele in arg:
lista = list(ele)
csvWriter.writerow(lista)
file.close()
我的列表lista
的内容是:
['ele1', 'ele2', '1215.0', '1.9', '1.37', '"ele3"']
但是excel文件中的结果是第一列中列表的内容,而不是6列,列表中的每个元素对应一列
我想将所有元素放在不同的列而不是不同的行中。这将把列表放在一行中:
arg=['ele1', 'ele2', '1215.0', '1.9', '1.37', '"ele3"']
import csv
with open("test.csv", 'w') as mfile:
writer = csv.writer(mfile, quoting=csv.QUOTE_ALL)
writer.writerow(arg)
在上面的代码中,将分别为每个元素调用csv编写器,这就是为什么将其放在同一列或不同行中。csv格式是一种文本格式。它由字段组成,字段之间用分隔符分隔(默认情况下为逗号(
,
),因此得名),并可选地用引号括起来(默认情况下为双引号“
)。但通常有不同的分隔符。例如,当逗号用于十进制数时(法语0.5写0,5),通常使用分号(;
)作为分隔符。在导入时,Excel应该告诉它将如何加载csv文件。如果什么都没有发生,则必须在Excel参数中搜索,或直接在操作系统语言设置中搜索需要哪个字符作为分隔符。然后在csv编写器中声明它,例如:
csvWriter = csv.writer(file, dialect='excel', delimiter = ";')
在不了解更多csv文件内容和系统配置的情况下,我无法再说更多…arg中有什么内容??我认为您需要将
writerow
移动到for循环之外,并使用lista.append(ele)
。如果您使用writerow(ele),它是否不起作用?'arg'是一个列表列表,因此'ele'是一个列表。谢谢最后我使用pandas来解决这个问题:df=pd.DataFrame(arg)df.to_excel(file.name,header=False,index=False)