Python:读取转义的Unicode字符并将其转换为可读文本

时间:2016-03-17 12:57:29

标签: python unicode

我有一个RDF文件,其中大多数对象由转义的Unicode字符组成,如下所示:

public class FoldersController : ApiController 
{
    [HttpGet]
    [Route("api/folders/")]
    public string GetThis(DateTime queryStringDate) 
    {
        return "abc";
    }

    [HttpGet]
    [Route("api/folders/{furtherpath}")]
    public bool GetThat(string furtherpath) 
    {
        return "xyz";
    }
}

我想使用Python脚本读取此文件并将这些对象转换为可读文本,即对于上面的示例,我想要以下输出:

...
<http://dbpedia.org/resource/Ry%C5%8Dgoku_Kokugikan> <http://www.w3.org/2000/01/rdf-schema#label> "\u4E21\u56FD\u56FD\u6280\u9928"@ja .
<http://dbpedia.org/resource/Tunisia> <http://www.w3.org/2000/01/rdf-schema#label> "\u30C1\u30E5\u30CB\u30B8\u30A2"@ja .
...

到目前为止,我的代码如下所示:

両国国技館
チュニジア

但是,这会使转义的Unicode字符保持不变,即

import codecs

for line in codecs.open("labels-en-uris_ja.nt","r","utf-8"):
    tmp = line.split(" ")
    label = tmp[2]
    label = label.split("@")[0]
    label = label.replace("\"","")
    print u"{0}".format(label)

在我的代码的最后一行使用简单\u4E21\u56FD\u56FD\u6280\u9928 \u30C1\u30E5\u30CB\u30B8\u30A2 给出完全相同的结果。但是,print label给出了所需的输出,所以我假设我在该文件中读取的方式有问题。产生我想要的输出的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以使用字符串对象上的.decode("unicode_escape")函数来执行此操作。

print u"{0}".format(label.decode("unicode_escape"))