Импортируйте плохо отформатированный файл txt с помощью python (удалите первые строки)

#python #pandas #import

Вопрос:

Я пытаюсь импортировать txt-файл в python и использую pandas.

Файл, который я пытаюсь импортировать, выглядит более или менее так:

 Final Test Values
***************************
Date: Friday, 24 September
Version  :  Version 3.0(3)
ID L      : 1937
ID P     :  60
***************************
A ; B ; C ; D ; E ;  F 
-----------------------------------------------------------------
660    ;    25    ;      5.6478      ;    0.9381     ;   0.67  ;    8.00
661    ;    25    ;      6.2592      ;    0.6103     ;   0.52  ;    8.00
662    ;    25    ;      6.7193      ;    0.5644     ;   0.52  ;    8.00
663    ;    25    ;      4.3940      ;    1.0760     ;   0.54  ;    8.00
664    ;    25    ;      6.4188      ;    0.5507     ;   0.54  ;    8.00
665    ;    25    ;      6.5221      ;    0.5619     ;   0.00  ;    8.00
 

Ценности, которые меня действительно интересуют, — это только эта часть:

 660    ;    25    ;      5.6478      ;    0.9381     ;   0.67  ;    8.00
661    ;    25    ;      6.2592      ;    0.6103     ;   0.52  ;    8.00
662    ;    25    ;      6.7193      ;    0.5644     ;   0.52  ;    8.00
663    ;    25    ;      4.3940      ;    1.0760     ;   0.54  ;    8.00
664    ;    25    ;      6.4188      ;    0.5507     ;   0.54  ;    8.00
665    ;    25    ;      6.5221      ;    0.5619     ;   0.00  ;    8.00
 

Дата, идентификатор L и идентификатор P могут каждый раз меняться.

Я выполнил весь код, вручную открыв файл txt и удалив все до 660, но это, очевидно, не лучший способ сделать это.

То, что у меня есть сейчас

У кого-нибудь есть какие-нибудь предложения?

Спасибо!

Ответ №1:

Используйте skiprows аргумент, чтобы игнорировать строки, которые вам не нужны:

 data = StringIO("""Final Test Values
***************************
Date: Friday, 24 September
Version  :  Version 3.0(3)
ID L      : 1937
ID P     :  60
***************************
A ; B ; C ; D ; E ;  F 
-----------------------------------------------------------------
660    ;    25    ;      5.6478      ;    0.9381     ;   0.67  ;    8.00
661    ;    25    ;      6.2592      ;    0.6103     ;   0.52  ;    8.00
662    ;    25    ;      6.7193      ;    0.5644     ;   0.52  ;    8.00
663    ;    25    ;      4.3940      ;    1.0760     ;   0.54  ;    8.00
664    ;    25    ;      6.4188      ;    0.5507     ;   0.54  ;    8.00
665    ;    25    ;      6.5221      ;    0.5619     ;   0.00  ;    8.00
""")
 
 df = pd.read_csv(data, sep=";", skiprows=[0,1,2,3,4,5,6,8])

    A    B       C       D     E     F 
0  660   25  5.6478  0.9381  0.67   8.0
1  661   25  6.2592  0.6103  0.52   8.0
2  662   25  6.7193  0.5644  0.52   8.0
3  663   25  4.3940  1.0760  0.54   8.0
4  664   25  6.4188  0.5507  0.54   8.0
5  665   25  6.5221  0.5619  0.00   8.0
 

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

1. Спасибо, это сработало!