[英]How to change text color from a python module (tqdm module) output ? (so not python text editor output)
[英]How to convert a Text object from a parsetree output of module Pattern in python?
我有一个这样的单词列表:
['Urgente', 'Recibimos', 'Info']
我使用了(parsetree(x, lemmata = True)
函数来转换单词,每个Word的输出是这样的:
[[Sentence('urgente/JJ/B-ADJP/O/urgente')],
[Sentence('recibimos/NN/B-NP/O/recibimos')],
[Sentence('info/NN/B-NP/O/info')]]
列表的每个组件的类型为pattern.text.tree.Text
。
我只需要获取括号中的一组单词,但是我不知道该怎么做,我需要以下输出:
[urgente/JJ/B-ADJP/O/urgente,
recibimos/NN/B-NP/O/recibimos,
info/NN/B-NP/O/info]
我使用str
将每个组件转换为字符串列表,但这会更改所有输出。
从他们的文档来看,似乎没有直接的方法或属性来获取您想要的东西。
但是我发现可以使用repr
将Sentence
对象打印为Sentence('urgente/JJ/B-ADJP/O/urgente')
。 因此,我查看了__repr__
实现的源代码,以了解其形成方式:
def __repr__(self):
return "Sentence(%s)" % repr(" ".join(["/".join(word.tags) for word in self.words]))
字符串“在括号中”似乎是单词和标签的组合。 然后,您就可以重复使用该代码,知道如果您已经有了pattern.text.tree.Text
对象,则“ 一个Text是一个Sentence对象的列表。每个Sentence是一个Word对象的列表。 ”(来自“ 解析树”文档 )。
所以这是我的hacky解决方案:
parsed = list()
for data in ['Urgente', 'Recibimos', 'Info']:
parsed.append(parsetree(data, lemmata=True))
output = list()
for text in parsed:
for sentence in text:
formatted = " ".join(["/".join(word.tags) for word in sentence.words])
output.append(str(formatted))
print(output)
打印output
给出:
['Urgente/NNP/B-NP/O/urgente', 'Recibimos/NNP/B-NP/O/recibimos', 'Info/NNP/B-NP/O/info']
请注意,此解决方案产生了str
列表(丢失了原始parsetree
输出中的所有属性/方法)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.