Pythonを使用してテキストファイル内の特定のパターンに基づいて行データを抽出する

k11

コード「MLT-TRR」で始まる行でデータ処理を行う必要があるデータを含む巨大なレポートファイルがあります。今のところ、そのコードで始まるスクリプトのすべての行を抽出し、それらを別々に配置しました。ファイル。新しいファイルは次のようになります-Rules.txt。

MLT-TRR                         Warning     C:\Users\Di\Pictures\SavedPictures\top.png  63   10   Port is not registered [Folder: 'Picture']

MLT-TRR                         Warning     C:\Users\Di\Pictures\SavedPictures\tree.png 315  10   Port is not registered [Folder: 'Picture.first_inst']

MLT-TRR                         Warning     C:\Users\Di\Pictures\SavedPictures\top.png  315  10   Port is not registered [Folder: 'Picture.second_inst']

MLT-TRR                         Warning     C:\Users\Di\Pictures\SavedPictures\tree.png 317  10   Port is not registered [Folder: 'Picture.third_inst']

MLT-TRR                         Warning     C:\Users\Di\Pictures\SavedPictures\top.png  317  10   Port is not registered [Folder: 'Picture.fourth_inst']

これらの各行について、「[Folder: 'Picture」の後にあるデータを抽出する必要があります。最初の行の場合のように「[Folder:' Picture」の後にデータがない場合は、その行をスキップして次に進みます。次の行に。また、これらの各行のファイル名を抽出したいと思います-top.txt、tree.txt

これはループを伴い、混乱するため、これを行うためのより簡単な方法を考えることはできませんでした。私がこれを行うことができる方法はありますか?各行のファイルパスと終了データのみを抽出します。

import os
import sys
from os import path
import numpy as np


folder_path = os.path.dirname(os.path.abspath(__file__))
inFile1 = 'Rules.txt'
inFile2 = 'TopRules.txt'

def open_file(filename):
    try:
        with open(filename,'r') as f:
            targets = [line for line in f if "MLT-TRR" in line]
            print targets
        f.close()
        with open(inFile1, "w") as f2:
            for line in targets:
                f2.write(line + "\n")
        f2.close()
        
    except Exception,e:
        print str(e)
    exit(1)


if __name__ == '__main__':
    name = sys.argv[1]
    filename = sys.argv[1]
    open_file(filename)
アーロンキーシング

ファイル名やその他のデータを抽出するには、正規表現を使用できる必要があります。

import re

for line in f:
    match = re.match(r"^MLT-TRR.*([A-Za-z]:\\[-A-Za-z0-9_:\\.]+).*\[Folder: 'Picture\.(\w+)']", line)
    if match:
        filename = match.group(1)
        data = match.group(2)

これは、後のデータ'Picture.に英数字とアンダースコアのみが含まれていることを前提としています。また、ファイル名[A-Za-z0-9_:\\.]がおかしい場合は、ファイル名部分で許可されている文字を変更しなければならない場合があります。また、ファイル名がWindowsのドライブ文字(絶対パス)で始まることを前提としているため、行内の他のデータと区別しやすくなっています。

ファイル名のベース名だけが必要な場合は、それを抽出した後、os.path.basenameまたはを使用できますpathlib.Path.name

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

txtファイルからデータを抽出し、特定のテキストに基づいて動的に新しいファイルを作成します

分類Dev

特定のテキストに基づいてファイルからデータを取得する-Python

分類Dev

変数の一致に基づいてファイル内の特定のパターンを抽出するawk

分類Dev

テキストフィールドに基づいてパンダデータフレーム内のCSVファイルをマージする

分類Dev

テキストファイルの名前に基づいて特定のデータのみを取得する

分類Dev

numpy を使用して特定のテキスト ファイル行からデータを抽出する

分類Dev

別の列のフィルターに基づいてパンダDataFrameからテキストを抽出する

分類Dev

PYTHON Re:パフォーマンス:テキストファイルの特定の行から開始して、行を読み取り、タブに基づいて分割してから、各要素にアクセスします。

分類Dev

別のファイル/辞書のキーワードに基づいてファイル内のテキストをフィルタリングする

分類Dev

パターンに基づいてログファイルを検索し、次に特定のテキストを逆に検索します

分類Dev

パターンに基づいてテキストファイルの行を再読み込みするにはどうすればよいですか?

分類Dev

テキストファイル行に基づいてコンマ区切りのコマンドラインパラメータを指定する

分類Dev

特定の行のヘッダーを使用して、テキストファイルを複数のパンダデータフレームに分割します

分類Dev

|| Pythonのテキストファイルのテキストに基づいて特定の行を印刷します

分類Dev

パンダ-特定のキー値に基づいてデータフレームから値を抽出します

分類Dev

シェルスクリプトを作成してディレクトリを再帰的にスキャンし、名前パターンに基づいて特定のファイルをGitに追加するにはどうすればよいですか?

分類Dev

PowerShellを使用してテキストファイル内のデータの特定の列を編集する

分類Dev

デリメータに基づいてテキストファイルを行と列に分割します

分類Dev

行に特定の文字列が含まれているテキストファイルVBAからデータを抽出します

分類Dev

Pythonを使用して複数のテキストファイルからデータを抽出する

分類Dev

Rの条件に基づいて、データフレーム内の特定の数の行を抽出しますか?

分類Dev

パンダを使用してテキストファイルからヘッダーデータを抽出する

分類Dev

フォルダを開いてテキストファイルをデータフレームに配置し、ファイル名に基づいてデータフレームの名前を変更するにはどうすればよいですか?

分類Dev

ファイル内のパターンが一致するキーと値に基づいてPython辞書を作成します

分類Dev

テキストファイル内の文字列を検索し、その結果に基づいて特定のアクションを実行する方法

分類Dev

特定の列の特定のテキストに基づいてデータフレームを分割する方法

分類Dev

列の値に基づいてテキスト ファイルをフィルター処理する

分類Dev

検索パターンに基づいて大きな.txtファイルから特定の行を抽出する方法

分類Dev

メタデータに基づいてRのtmコーパス内のドキュメントをフィルタリングする方法は?

Related 関連記事

  1. 1

    txtファイルからデータを抽出し、特定のテキストに基づいて動的に新しいファイルを作成します

  2. 2

    特定のテキストに基づいてファイルからデータを取得する-Python

  3. 3

    変数の一致に基づいてファイル内の特定のパターンを抽出するawk

  4. 4

    テキストフィールドに基づいてパンダデータフレーム内のCSVファイルをマージする

  5. 5

    テキストファイルの名前に基づいて特定のデータのみを取得する

  6. 6

    numpy を使用して特定のテキスト ファイル行からデータを抽出する

  7. 7

    別の列のフィルターに基づいてパンダDataFrameからテキストを抽出する

  8. 8

    PYTHON Re:パフォーマンス:テキストファイルの特定の行から開始して、行を読み取り、タブに基づいて分割してから、各要素にアクセスします。

  9. 9

    別のファイル/辞書のキーワードに基づいてファイル内のテキストをフィルタリングする

  10. 10

    パターンに基づいてログファイルを検索し、次に特定のテキストを逆に検索します

  11. 11

    パターンに基づいてテキストファイルの行を再読み込みするにはどうすればよいですか?

  12. 12

    テキストファイル行に基づいてコンマ区切りのコマンドラインパラメータを指定する

  13. 13

    特定の行のヘッダーを使用して、テキストファイルを複数のパンダデータフレームに分割します

  14. 14

    || Pythonのテキストファイルのテキストに基づいて特定の行を印刷します

  15. 15

    パンダ-特定のキー値に基づいてデータフレームから値を抽出します

  16. 16

    シェルスクリプトを作成してディレクトリを再帰的にスキャンし、名前パターンに基づいて特定のファイルをGitに追加するにはどうすればよいですか?

  17. 17

    PowerShellを使用してテキストファイル内のデータの特定の列を編集する

  18. 18

    デリメータに基づいてテキストファイルを行と列に分割します

  19. 19

    行に特定の文字列が含まれているテキストファイルVBAからデータを抽出します

  20. 20

    Pythonを使用して複数のテキストファイルからデータを抽出する

  21. 21

    Rの条件に基づいて、データフレーム内の特定の数の行を抽出しますか?

  22. 22

    パンダを使用してテキストファイルからヘッダーデータを抽出する

  23. 23

    フォルダを開いてテキストファイルをデータフレームに配置し、ファイル名に基づいてデータフレームの名前を変更するにはどうすればよいですか?

  24. 24

    ファイル内のパターンが一致するキーと値に基づいてPython辞書を作成します

  25. 25

    テキストファイル内の文字列を検索し、その結果に基づいて特定のアクションを実行する方法

  26. 26

    特定の列の特定のテキストに基づいてデータフレームを分割する方法

  27. 27

    列の値に基づいてテキスト ファイルをフィルター処理する

  28. 28

    検索パターンに基づいて大きな.txtファイルから特定の行を抽出する方法

  29. 29

    メタデータに基づいてRのtmコーパス内のドキュメントをフィルタリングする方法は?

ホットタグ

アーカイブ