Попытка копирования / вставки текста между начальной и конечной точками, транспонирование и замена точек данных - PullRequest
0 голосов
/ 21 октября 2018

У меня есть код, который выполняет копирование / вставку из большого файла в анализируемый файл, который мне нужен.Вот рабочий скрипт.

with open('C:\\Users\\Excel\\Desktop\\test_in.txt') as infile, open('C:\\Users\\Excel\\Desktop\\test_out.txt', 'w') as outfile:
    copy = False
    for line in infile:
        if line.strip() == "Start":
            copy = True
        elif line.strip() == "End":
            copy = False
        elif copy:
            outfile.write(line)

Теперь я пытаюсь выяснить, как транспонировать каждый блок теста и несколько раз менять местами смежные точки данных.Может быть, это потребует DTA кадра, я не совсем уверен.

Вот изображение до.

enter image description here

Вот изображение после.

enter image description here

Вот мой пример текста.

file name
file type
file size
Start
        - data_type: STRING
          name: Operation
        - data_type: STRING
          name: SNL_Institution_Key
        - data_type: INTEGER
          name: SNL_Funding_Key
End
        - data_type: STRING
          name: Operation
        - data_type: STRING
          name: SNL_Institution_Key
        - data_type: INTEGER
          name: SNL_Funding_Key
Start
        - data_type: STRING
          name: SEDOL_NULL
        - data_type: STRING
          name: Ticker
        - data_type: DATETIME
          name: Date_of_Closing_Price
End 

Мне кажется, что это было бы довольно сложно сделать в Python.Если это слишком сложно, пожалуйста, дайте мне знать.Python не может быть правильным инструментом для работы.Я не знаю достаточно о Python, чтобы точно сказать, правильный ли это подход или нет.Спасибо за ваше время.

1 Ответ

0 голосов
/ 21 октября 2018

разделите строки двоеточием, затем объедините их в другом порядке.Я добавил несколько флагов для точной пунктуации, как в вашем файле, но для данных среднего размера я обычно использую итерацию с несколькими регулярными выражениями или заменой строк

with open('C:\\Users\\Excel\\Desktop\\test_in.txt') as infile, 
    file_start = True
    line = line.strip()
    next(infile)
    next(infile)
    next(infile)
    for line in infile:
        if line.strip() == "Start":
            if file_start:
                file_start = False # write nothing first time
            else:
               outfile.write('\n')
            line_start = True  # starting new line in the output file
        elif not line.strip() == "End":
            if not line_start:  
                outfile.write(", ")

            linestart = False

            line = line.strip(" -")
            s = line.split(": ")
            outfile.write(": ".join(s[::-1]))
...