некоторый код для объединения текстовых файлов с удалением слов в начале

#python #pandas

#python #панды

Вопрос:

Всем доброго дня!

Дело в том, что у меня есть несколько текстовых файлов, и у меня есть скрипт для их объединения. Каждый текстовый файл начинается с:

 Export Type:                        by LAIGCISAI
LAIGCISAI:                        fjdfkj
HLR NUMBER:                         NA
Routing Category:                   NA
Telephone Service:                  NA
Export User Scope:                  Attached amp; Detached User
Task Name:                          lfl;sfd
Data Type:                          col1/col2
Begin Time of Exporting data:       2019-4-14 19:41
=================================
col1                    col2         
40188e5464645645         54634565754     
401884645645564         54545454564
401087465836453         54545454565     
401885645656567         53434343435
401084569498484         54342340788
401088465836453         56767686334
401439569345656         64545467558
401012993933334         55645342352
401034545566463         34353463464
  

Я хотел бы объединить только начиная с col1 и col2 (без имен столбцов), но скрипт также объединяет их со словами в начале. Не могли бы вы обновить этот скрипт?

 import fileinput
import glob

file_list = glob.glob("*.txt")

with open('resultfile.txt', 'w') as file:
    input_lines = fileinput.input(file_list)
    file.writelines(input_lines)
  

и еще один вопрос: я хотел бы избавиться от 5 в начале значений в col2, а также стереть все строки, которые не начинаются с 40108 / 40188 / 401088e. столбцы действительно длинные. В сумме у меня 50-60 текстовых файлов. Спасибо!

В конце должно выглядеть так:

 40188e464645645         4634565754     
401884645645564         4545454564
401087465836453         4545454565     
401885645656567         3434343435
401084569498484         4342340788
401088465836453         6767686334
  

Ответ №1:

Сначала выполните цикл по всем файлам из списка, затем по строкам и фильтруйте строки по startswith с помощью кортежа:

 with open('resultfile.txt', 'w') as file:
    for f in file_list:
        with open(f, 'r') as f1:
            for line in f1:
                if line.startswith(('40108','40188','401088')):
                    file.writelines(line)
  

Ответ №2:

Используйте Pandas ‘s skiprows , чтобы пропустить первые несколько строк:

 data = pd.read_csv('file.txt', skiprows=10) 
  

Результаты:

        col1                    col2         
0  40188e5464645645        54634565754     
1  401884645645564         54545454564
2  401087465836453         54545454565     
3  401885645656567         53434343435
4  401084569498484         54342340788
5  401088465836453         56767686334
6  401439569345656         64545467558
7  401012993933334         55645342352
8  401034545566463         34353463464
  

Комментарии:

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