在Python中将单编码文本转换为可读文本

时间:2015-09-28 20:03:09

标签: python-2.7 unicode nltk

我有Unicode文本如下

(S (NP (N \u0db6\u0dbd\u0dbd\u0dcf)) (VP (V \u0db6\u0dbb\u0dc0\u0dcf)))

如何将代码'\ u0 ___'转换为相关的可读字符,将其更改为可读格式。我正在使用python版本2.7

我通过以下代码段在NLTK(3.0)中获得该输出,其中树是 nltk.tree.Tree

for tree in treelist1:
    print unicode(str(tree))

我需要像 print(TreePrettyPrinter(tree).text())这样的东西,它可以提供我想要的unicode兼容输出,但是我不需要树形布局。在NLTK中是否有一种方法可以获得像输出这样的可读文本?

的输出也有同样的问题
for rule in grammar1.productions():
    print(rule.unicode_repr())

其中grammar1为 nltk.grammar.CFG

输出如下。

VP -> V
VP -> NP V
N -> '\u0db6\u0dbd\u0dca\u0dbd\u0dcf'
N -> '\u0db8\u0dd2\u0db1\u0dd2\u0dc3\u0dcf'
N -> '\u0db8\u0dda\u0dc3\u0dba'

最终结果非常好。我只有输出表示的问题

1 个答案:

答案 0 :(得分:3)

question中有解决方案。也适用于Python 2.7

与NLTK无关。简单的解决方案是使用' unicode_escape'

解码输出文字
print(str(tree).decode('unicode_escape'))

print(rule.unicode_repr().decode('unicode_escape'))

对于NTLK类型的解决方案,打印 nltk.tree.Tree 类型的树作为括号内的文本,请使用以下

print(tree.pformat())