【发布时间】:2018-07-22 17:05:47
【问题描述】:
大家好,我正在寻找我的代码的解决方案,我尝试将 CSV 文件转换为 XLSX 文件,并且我的所有数据都被缩减为由; 分隔的一列。 (见下图)
您能否帮我解决两个代码之一,以便在转换等于 csv 文件时使数据表示? (见图片)
以下两个代码给出相同的结果:(重要的是,我在 Jupyter Notebook 上使用 Python 3.6 env):
import os
import glob
import csv
from xlsxwriter.workbook import Workbook
for csvfile in glob.glob(os.path.join('.', 'LOGS.CSV')):
workbook = Workbook(csvfile[:-4] + '.xlsx')
worksheet = workbook.add_worksheet()
with open(csvfile, 'r') as f:
reader = csv.reader((line.replace('\0','-') for line in f))
for r, row in enumerate (reader):
for c, col in enumerate(row):
worksheet.write(r, c, col)
workbook.close()
import os
import csv
import sys
from openpyxl import Workbook
data_initial = open("new.csv", "r")
sys.getdefaultencoding()
workbook = Workbook()
worksheet = workbook.worksheets[0]
with data_initial as f:
data = csv.reader((line.replace('\0','') for line in data_initial), delimiter=",")
for r, row in enumerate(data):
for c, col in enumerate(row):
for idx, val in enumerate(col.split('/')):
cell = worksheet.cell(row=r+1, column=c+1)
cell.value = val
workbook.save('output.xlsx')
这是我的 CSV 文件数据组织:
这就是我将它转换为 XLSX 时得到的结果:
从 cmets 编辑
好的,所以我使用了@DeepSpace 的program:
import pandas as pd
pd.read_csv('C:/Users/Pictures/LOGS.CSV')
.to_excel('C:/Users/Pictures/excel.xlsx')
我仍然得到这个:
好的解决方案: 转换很棒。但在我的情况下,第一列以某种方式移动。 Data num String 什么都没有,第一列是它的值...(见下图)
import pandas as pd
filepath_in = "C:/Users/Pictures/LOGS.csv"
filepath_out = "C:/Users/Pictures/excel.xlsx"
pd.read_csv(filepath_in, delimiter=";").to_excel(filepath_out)
【问题讨论】:
-
如果你不介意安装新包的开销,整个逻辑基本上可以减少到 1-2 行代码:
import pandas as pd ; pd.read_csv('/path/to/csv').to_excel('/path/to/excel.xlsx') -
看起来输出分隔符是分号。是否有理由将其更改为逗号?
-
DeepSpace 感谢快速响应并提供帮助。但是它仍然无法与您的程序一起使用,您还有其他想法吗? : 将 pandas 导入为 pd ; pd.read_csv('/path/to/csv').to_excel('/path/to/excel.xlsx')
标签: python python-3.x python-2.7 csv xlsx