Как разделить данные в одном столбце Excel на несколько столбцов, используя python - PullRequest
0 голосов
/ 29 апреля 2020

Может кто-нибудь помочь мне в моей программе? Я скопировал некоторые данные из файла TXT в XLSX, используя библиотеку XLSXwriter, и эти данные скопированы в 1 столбец. Теперь я хотел бы разбить эти данные на несколько столбцов, используя пробел в качестве разделителя. Ниже моя программа. Теперь, пожалуйста, предложите мне любой путь вперед.

with open('filter_pre.txt', 'wt+') as logs_pre:
    logs_pre.write(filter_pre)

with open('filter_pre.txt', 'rt+') as Pre_logs:
    lines = Pre_logs.readlines()
    for line in lines:
        Pre_filter_logs.write(row, col, line.strip())
        row += 1
        if not line:
            break
    filter_logs.close()

Ответы [ 2 ]

0 голосов
/ 29 апреля 2020

Вы можете добавить дополнительную функцию (addRow) к объекту Worksheet где-то в вашем коде.

def addRowToXls(self, data, row = 0):
    for colNum, value in enumerate(data):
            self.write(row, colNum, value)

Таким образом, вы можете легко добавлять строки (независимо от количества столбцов в нем) на лист, например:

worksheet.addRow(data = ["Column 1 text", "Column 2 text", "And so on..."], row = 3) # add to row 4

Так что в вашем случае весь код будет таким, я думаю

import xlsxwriter


def addRowToXls(self, data, row = 0):
    for colNum, value in enumerate(data):
            self.write(row, colNum, value)

xlsxwriter.worksheet.Worksheet.addRow = addRowToXls

workbook = xlsxwriter.Workbook("new_file.xlsx") # new xlsx file
worksheet = workbook.add_worksheet()
worksheet.addRow(data = ["column 1 header text", "column 2 header text", "and so on..."]) # you can skip this
row_save = 1 # start from 0, if you skip column headers

with open('filter_pre.txt', 'rt+') as Pre_logs: # text file to read from
    lines = Pre_logs.readlines()
    for line in lines:
        worksheet.addRow(data = line.split(" "), row = row_save)  # used space as seperator
        row_save += 1

workbook.close()

Протестировано. Работает как положено.

0 голосов
/ 29 апреля 2020

Написание ответа для я не могу комментировать;

Я думаю, вам следует разделить данные перед записью в XLSX. Это намного проще. Пакет Office известен тем, что с ним трудно взаимодействовать в коде.

with open("inputs.txt") as f:
    rowcount = 0
    for row in f.readlines():
        row = row.strip() # Clean up each row
        # Reset the column counter for each row. 
        # Remove the line below and see what happens ;) 
        columcount = 0 
        for column in row.split(" "): # Break up a row on each space.
            excelsheet.write(rowcount, columcount, column)
            columcount +=1 
        rowcount += 1
...