使用正则表达式在Python中解析大型文本文件

2024-10-01 15:35:12 发布

您现在位置:Python中文网/ 问答频道 /正文

如何在一个大的文本文件(使用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 = volts行开始之前的数据,比如a。然后我想再次保存从第Vnet05 YUNITS = volts行开始到第vbs_i YUNITS = amps行开始之前的数据b

因为我的文本文件超过了1000k行。我只想解析一次。在


Tags: 数据文本title结尾function单词regexlinear
2条回答

1)为“start”和“stop”行编写一个regexp匹配

http://docs.python.org/2/library/re.html#examples 正如评论者提到的那样,您可能不需要regexp来完成这项工作

2)逐行读取并与开始和停止行进行比较,使用此设置状态变量true或false

3)如果state变量为true,则使用append将该行添加到数组中

在文件的末尾,应该有数组中感兴趣的行

代码如下:

#!/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)

相关问题 更多 >

    热门问题