Конвертировать структурированный текстовый файл в CSV - PullRequest
0 голосов
/ 07 февраля 2019

Как добиться вывода ниже в python:

Ввод:

Prataps Peter A         A    T         9945.03  
Shailin Amy             B              9437.50  

Ввод:

Prataps,Peter,A,A,T,9945.03  
Shailin,Amy,,B,,9437.50

Код, который я использую:

    input = "C:\Apps\Data\Report\CC_report.csv"
    final = "C:\Apps\Data\Report\CC_report1.csv"
    header = "LastName,FirstName,Middle_Name ,ST,B1,CURRENT_BALANCE)
    with open(input) as oldfile, open(final, 'w') as newfile:
        newfile.write(header+"\n")
        for line in oldfile:
           line1 = re.sub(" +", ",", line.strip())
           newfile.write(line1 + "\n")

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

Я использовал Numpy для определения ширины столбца.Данные должны быть очищены и определены перед обработкой файла.

    #source file location  
    path = "myfile.csv"  
    # define column location and then define the width   
    column_locations = np.array([1, 25, 30, 31, 47, 58, 75, 92, 109, 126, 132, 152, 158, 163, 179, 190, 207, 224, 241, 258, 264, 295, 311, 322, 356, 373 ])  
    widths = column_locations[1:] - column_locations[:-1]  

    #creating numpy array from the source file   
    data = np.genfromtxt(path, dtype=None, delimiter=widths, autostrip=True)
    print(data)  
    data =np.char.replace(data,',',' ')  
    np.savetxt(path,data,delimiter=",",fmt='%s')  
0 голосов
/ 07 февраля 2019

Исходя из введенных данных, я вижу, что поля разделены пробелом, поэтому вам придется заменить их запятой

file = open('data.txt', 'r')
data=myfile.read().replace(' ', ',')

После получения содержимого вы можете добавить его в новый файл.

new_file = open("data.csv", "w")
new_file.write(data)
new_file.close()
...