使用python从航空文本中提取段落
我是python新手,我尝试使用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
<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:我想是的,我的答案分别改为使用
和
(最后)。