Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python从航空文本中提取段落_Python_Regex - Fatal编程技术网

使用python从航空文本中提取段落

使用python从航空文本中提取段落,python,regex,Python,Regex,我是python新手,我尝试使用python从段落中提取文本。 案文如下: <stx>(FPL-ACF66-IN -EH30/H-S/C -LGKR0900 -N0100VFR KRK ARA -LGTG0300 -DOF/120928) <etx> <stx>GG (APL-ACF66-IN -EH30/H-S/C -LGKR0900 -N0100VFR KRK ARA -LGTG0300 -DOF/110928) <etx> <stx&g

我是python新手,我尝试使用python从段落中提取文本。 案文如下:

<stx>(FPL-ACF66-IN
-EH30/H-S/C
-LGKR0900
-N0100VFR KRK ARA
-LGTG0300
-DOF/120928)
<etx>
<stx>GG
(APL-ACF66-IN
-EH30/H-S/C
-LGKR0900
-N0100VFR KRK ARA
-LGTG0300
-DOF/110928)
<etx>
<stx>
(CNL-ACF66-IN
-EH30/H-S/C
-LGKR0900
-N0100VFR KRK ARA
-LGTG0300
-DOF/120928)<etx>
我使用该代码,但它只提取第一行:FPL-ACF66-IN

import re

with open('FPL.txt', 'r', encoding = 'utf-8') as f:
        works = f.read()

        pattern = 'FPL'+'.*'
        w =re.findall(pattern, works, re.I)
        for work in w:
            print(work)

什么是我的错

当然可以使用(,注意修饰符)之类的正则表达式

在我看来,这就像某种
xml
文件,那么为什么不使用解析器呢?
Python
中的代码片段:

import re

rx = re.compile(r'\(FPL.+?-DOF/120928\)', re.DOTALL)

with open("test.txt") as fp:
    data = fp.read()
    try:
        paragraph = rx.search(data).group(0)
    except:
        paragraph = None
    print(paragraph)
这就产生了

(FPL-ACF66-IN
-EH30/H-S/C
-LGKR0900
-N0100VFR KRK ARA
-LGTG0300
-DOF/120928)

如果您想在此处包含所有段落,可以使用

\([^()]+\)
甚至

<stx>(.+?)<etx>

虽然您当然可以使用像(,注意修饰符)这样的正则表达式

在我看来,这就像某种
xml
文件,那么为什么不使用解析器呢?
Python
中的代码片段:

import re

rx = re.compile(r'\(FPL.+?-DOF/120928\)', re.DOTALL)

with open("test.txt") as fp:
    data = fp.read()
    try:
        paragraph = rx.search(data).group(0)
    except:
        paragraph = None
    print(paragraph)
这就产生了

(FPL-ACF66-IN
-EH30/H-S/C
-LGKR0900
-N0100VFR KRK ARA
-LGTG0300
-DOF/120928)

如果您想在此处包含所有段落,可以使用

\([^()]+\)
甚至

<stx>(.+?)<etx>

如果您使用
*
FPL
之后匹配所有内容,则应将匹配限制到所需的字符/单词;请参见@Jan的回答,您在使用
*
进行
FPL
后匹配所有内容,您应该将匹配限制到所需的字符/单词;请参阅@Jan's answerIt,它看起来不像xml,因为它忽略了诸如
之类的结束标记
可能代表“文本的开始”和
代表“文本的结束”。@BioGeek:我想是的,我已经将答案分别改为使用
。它看起来不像xml,因为它没有像
这样的结束标记
可能代表“文本的开始”和
代表“文本的结束”。@BioGeek:我想是的,我的答案分别改为使用
(最后)。