#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 строк