python:用于注释的拆分句子

时间:2018-01-14 08:26:05

标签: python

列出:

matrixA = []
matrixB = []

句子:

sentences 1 = "words1 words2 words3 {matrixA} {matrixB}"
sentences 2 = "words3 words4  {matrixA}"
etc..

结果:

matrixA = "words1 words2 words3", "words3 words4"
matrixB = "words1 words2 words3"
etc..

任何想法,支持的库? import re,nltk,还是? 可以手动完成,但如果我使用库我想更快。

1 个答案:

答案 0 :(得分:1)

首先,如果你有很多句子,把它放在list中是明智的:

sentences = ["words1 words2 words3 {matrixA} {matrixB}", "words3 words4  {matrixA}"]

接下来,对于不同的变量名称,例如Matrix*,我建议您使用defaultdict包中的collections个列表。

from collections import defaultdict
matrices = defaultdict(list)  

现在,循环来了。要获取每个句子中的名称列表,请使用re.findall。然后,对于找到的每个变量名称,将单词附加到matrices中该变量名称的列表中。

import re

for s in sentences:
    for m in re.findall("{(.*?)}", s):
        matrices[m].append(s.split('{', 1)[0])

print(dict(matrices))
{
    "matrixA": [
        "words1 words2 words3 ",
        "words3 words4  "
    ],
    "matrixB": [
        "words1 words2 words3 "
    ]
}

这似乎是你正在寻找的。

如果您不想要尾随空格,请附加s.split('{', 1)[0].strip(),调用str.strip以删除前导/尾随空格字符。