0

特定の単語から始まり特定の単語で終わるテキスト データを大きなテキスト ファイルに格納する方法 (python と regex を使用)。

テキスト ファイルの一部を次に示します。

X_FUNCTION = linear
TITLE =
netlist_run
Vnet04  YUNITS = volts
+  0.000000000000000E+00 -4.000000000000000E-01  3.636363636363636E-02 -4.000000000000000E-01
+  7.272727272727272E-02 -4.000000000000000E-01  1.090909090909091E-01 -4.000000000000000E-01
+  1.454545454545454E-01 -4.000000000000000E-01  1.818181818181818E-01 -4.000000000000000E-01
+  2.181818181818182E-01 -4.000000000000000E-01  2.545454545454546E-01 -4.000000000000000E-01
+  2.909090909090910E-01 -4.000000000000000E-01  3.272727272727273E-01 -4.000000000000000E-01
Vnet05  YUNITS = volts
+  0.000000000000000E+00  3.000000000000000E+00  3.636363636363636E-02  3.000000000000000E+00
+  7.272727272727272E-02  3.000000000000000E+00  1.090909090909091E-01  3.000000000000000E+00
+  1.454545454545454E-01  3.000000000000000E+00  1.818181818181818E-01  3.000000000000000E+00
+  2.181818181818182E-01  3.000000000000000E+00  2.545454545454546E-01  3.000000000000000E+00
+  2.909090909090910E-01  3.000000000000000E+00  3.272727272727273E-01  3.000000000000000E+00
vbs_i  YUNITS = amps
+  0.000000000000000E+00  3.881535006369462E-12  3.636363636363636E-02  3.958355883215995E-12
+  7.272727272727272E-02  4.155732392087960E-12  1.090909090909091E-01  4.661608907762973E-12
+  1.454545454545454E-01  5.953136322408749E-12  1.818181818181818E-01  9.230381781895836E-12
+  2.181818181818182E-01  1.746801289794467E-11  2.545454545454546E-01  3.787865538450135E-11
+  2.909090909090910E-01  8.739483655864867E-11  3.272727272727273E-01  2.040272699537106E-10

オブジェクトVnet04 YUNITS = voltsの行の開始直前まで、行からデータの保存を開始したいとします。そして、行から行の開始直前までデータをオブジェクトに保存したいVnet05 YUNITS = voltsaVnet05 YUNITS = voltsvbs_i YUNITS = ampsb

私のテキストファイルは100万行を超えています。一度だけ解析したい。

4

2 に答える 2

0

1)「開始」行と「停止」行の正規表現一致を記述します

http://docs.python.org/2/library/re.html#examples を参照

2) 行ごとに行を読み取り、開始行と停止行と比較し、これを使用して状態変数を true または false に設定します。

3) 状態変数が true の場合、append を使用して行を配列に追加します。

ファイルの最後に、関心のある行が配列に含まれている必要があります

于 2013-04-15T11:40:32.417 に答える
0

コードは次のとおりです。

#!/usr/bin/env python3

import re

ins = open( "test.txt", "r" )
array = []
array2 = []
i = 0
for line in ins:
    if ((re.match('Vnet05 YUNITS = volts) or re.match('vbs_i YUNITS = amps')) and (i != 0 ):
        array.append(array2)
        i += 1
        array2 = []
        array2.append( line )
    elif line.startswith('+') :
        i += 1
        array2.append(line)

array.append(array2)
for line in array:
    print("Object :")
    print(line)
于 2013-04-15T12:09:02.283 に答える