在已知字符串之前查找任意长度的字符串

时间:2013-06-16 05:19:53

标签: python string parsing

说我有一个字符串如:

Lecture/NNP/B-NP/O delivered/VBD/B-VP/O at/IN/B-PP/B-PNP the/DT/B-NP/I-PNP UNESCO/NNP/I-NP/I-PNP House/NNP/I-NP/I-PNP in/IN/B-PP/B-PNP Paris/NNP-LOC/B-NP/I-PNP

我想拉出“/ NNP /”之前出现的每个单词。这意味着我的输出是

  
    

讲座,联合国教科文组织,众议院

  

我试过了:

打印re.findall(r'/ NNP /',字符串)然后向后工作,但我不能让它任意。总是有一个空白区域可能会有所帮助。

编辑:删除了列表中的错误。

2 个答案:

答案 0 :(得分:4)

试试这个:

s = 'Lecture/NNP/B-NP/O delivered/VBD/B-VP/O at/IN/B-PP/B-PNP the/DT/B-NP/I-PNP UNESCO/NNP/I-NP/I-PNP House/NNP/I-NP/I-PNP in/IN/B-PP/B-PNP Paris/NNP-LOC/B-NP/I-PNP'

re.findall(r'(\S+)/NNP/', s)
=> ['Lecture', 'UNESCO', 'House']

答案 1 :(得分:2)

前瞻。

>>> re.findall('(?:\s|^)[^/]+(?=/NNP/)', 'Lecture/NNP/B-NP/O delivered/VBD/B-VP/O at/IN/B-PP/B-PNP the/DT/B-NP/I-PNP UNESCO/NNP/I-NP/I-PNP House/NNP/I-NP/I-PNP in/IN/B-PP/B-PNP Paris/NNP-LOC/B-NP/I-PNP')
['Lecture', 'UNESCO', 'House']