我正在将大型XLSX文件(超过60列和3000行)转换为TSV格式。一些字段包含带有2-3个段落的文本(多行换行)。 我想要支持UTF-8,并且希望每一行都显示在生成的TSV中的一行上
我做了以下事情:
import xlrd
import csv
# open the tsv file(output) in unicode format
with open('outTSV.tsv', 'w', encoding='utf-8') as TSVfile:
wr = csv.writer(TSVfile, delimiter="\t")
# open the xlsx file
xlfile = xlrd.open_workbook('inXLSX.xlsx')
# retrieve sheet
sheet = xlfile.sheet_by_index(0)
# write rows into TSVfile
for row in range(sheet.nrows):
wr.writerow(sheet.row_values(row))
我希望XLSX文件中的每一行都能转换为TSV文件中的一行。但是,由于某些单元格具有段落,因此会将其转换为换行符。因此,我得到了变形的TSV文件。
XLSX文件
答案 0 :(得分:0)
我能够使用pandas数据框解决问题。
import pandas as pd
#Read excel file into a dataframe
data_xlsx = pd.read_excel('excel.xlsx', 'Sheet1', index_col=None)
#Replace all columns having spaces with underscores
data_xlsx.columns = [c.replace(' ', '_') for c in data_xlsx.columns]
#Replace all fields having line breaks with space
df = data_xlsx.replace('\n', ' ',regex=True)
#Write dataframe into csv
df.to_csv('fileTSV.csv', sep='\t', encoding='utf-8', index=False, line_terminator='\r\n')