我有一个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
给出了所需的输出,所以我假设我在该文件中读取的方式有问题。产生我想要的输出的正确方法是什么?
答案 0 :(得分:1)
您可以使用字符串对象上的.decode("unicode_escape")
函数来执行此操作。
print u"{0}".format(label.decode("unicode_escape"))