列出:
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,还是? 可以手动完成,但如果我使用库我想更快。
答案 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 "
]
}
这似乎是你正在寻找的。 p>
如果您不想要尾随空格,请附加s.split('{', 1)[0].strip()
,调用str.strip
以删除前导/尾随空格字符。