我有一个very_largeString
,其中包含单词列表和一些id
,我想提取所有单词,id
NC
AQ
和id
{1}} 形态上的ocurre consecutevely 并打印very_largeString= ''' Hola hola I 1
compis compis NCMS000 0.500006
! ! Fat 1
esta este DD0FS0 0.986779
y y CC 0.999962
es ser VSIP3S0 1
que que CS 0.437483
es ser VSIP3S0 1
muy muy RG 1
sencilla sencillo AQ0FS0 1
de de SPS00 0.999984
utilizar utilizar VMN0000 1
, , Fc 1
que que CS 0.437483
si si CS 0.99954
nos nos PP1CP000 0.935743
ponen poner VMIP3P0 1
facilidad facilidad NCFS000 1
con con SPS00 1
las el DA0FP0 0.970954
tareas tarea NCFP000 1
de de SPS00 0.999984
la el DA0FS0 0.972269
casa casa NCFS000 0.979058
pues pues CS 0.998047
mejor mejor AQ0CS0 0.873665
que que PR0CN000 0.562517
mejor mejor AQ0CS0 0.873665
, , Fc 1
pero pero CC 0.999764
tan tan RG 1
antigua antiguo AQ0FS0 0.953488
que que CS 0.437483
según según SPS00 0.995943
mi mi DP1CSS 0.999101
madre madre NCFS000 1
era ser VSII1S0 0.491262
de de SPS00 0.999984
carga carga NCFS000 0.952569
superior superior AQ0CS0 0.992424
'''
的其余部分。例如:
id
这将是所需的输出,因为它们位于NC
AQ
和[('carga', 'NCFS000', 'superior', 'AQ0CS0'), ('carga', 'NCFS000', 'frontal', 'AQ0CS0')]
字符的开头:
AQ
如何修复我的正则表达式,以便提取所有ID为 NC
和 regex_ = re.findall(r'^(\w+)\s\w+\s(NCFS000)\s[0-9.]+\n^(\w+)\s\w+\s(AQ0CS0)', very_largeString, re.M)
print regex_
的单词?这就是我所有人都试过的:
id
输出只是单词,并且与 [('word','id'),('word','id')]
相关联,例如:
{{1}}
答案 0 :(得分:1)
from pprint import pprint
import re
result = re.findall(r'''
(?mx) # Muti-line, verbose
^ # Align to beginning of a line
(\S+)\s+ # Grab first word
\S+\s+ # Don't care about 2nd word
(NC\S+)\s+ # 3rd word must have NC
\S+\n # End of first line
^ # Next line is identical in form
(\S+)\s+ # to the first line
\S+\s+
(AQ\S+)\s+ # except 3rd word must have AQ
\S+\n
''', very_largeString)
pprint (result)
答案 1 :(得分:1)
我的猜测是你试图做一些NLP(自然语言处理),并且你想从一些西班牙语语料库中提取由noun
和qualifier
组成的对。已经有了完成此类任务的工具。
我建议你看看Python Natural Language Tool Kit(NLTK)。
另外,我不得不说这不是一个常见的任务,而是在完全自然的文本上对语料库执行这些操作。我认为你应该解释一下你的意图,也许你试图解决的解决方案并不是解决你实际问题的最佳方案。
帮助我们为您提供帮助。