清单:
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..
任何想法,图书馆的支持?
导入re,nltk或?
可以手动完成,但是如果我使用图书馆,我想会更快。
最佳答案
首先,如果您有很多句子,将其放在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
除去前导/尾随空格字符。关于python - python:注释的拆分句子,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48247844/