为了账号安全,请及时绑定邮箱和手机立即绑定

使用变量在python中创建N个三元组

使用变量在python中创建N个三元组

森栏 2021-03-29 16:10:34
我目前正在尝试使用变量来创建N个三元组的图形,分配变量没有任何麻烦,但是我一直收到错误消息。这是代码:from rdflib import Namespace, URIRef, Graphfrom StringIO import StringIOxmlns = "http://www.example.org/lexicon#"rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"lemon = "http://www.monnetproject.eu/lemon#"graph = Graph()F = open("new_2.txt", "r")for line in F:这是我分配变量的部分。这是很长的时间,我知道它可以正常工作,所以我将不包括在内。以下代码仍是for line in F:line1 = ''+synset_offset+'\rdf.lex_filenum\ '+lex_filenum+''    line2 = ''+synset_offset+'\lemon.ss_type\ '+ss_type+''    line3 = ''    for item in word:         line3 +=''+synset_offset+'\lemon.lexical_entry\ '+iw.next()+'/n'    line4 = ''+synset_offset+'\lemon.gloss\ '+gloss+''    line5 = ''    line6 = ''    line7 = ''    for item in S:        pointer = ip.next()        pos = iss.next()        source_target = ist.next()        line5 += ''+synset_offset+'\lemon.has_ptr\ '+pointer+'/n'        line6 += ''+pointer+'\lemon.pos\ '+pos+'/n'        line7 += ''+pointer+'\lemon.source_target\ '+source_target+'/n'    contents = '''\    '''+line1+'''    '''+line2+'''    '''+line3+'''    '''+line4+'''    '''+line5+'''    '''+line6+'''    '''+line7+''''''      tabfile = StringIO(contents)    for line in tabfile:        triple = line.split()                # triple is now a list of 3 strings        triple = (URIRef(t) for t in triple) # we have to wrap them in URIRef        graph.add(triple)print graph.serialize(format='nt')  
查看完整描述

1 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

您尝试使用来连接“方法” str,这意味着该方法iw.next是该方法的“指针”,并且iw.next()将是该方法的返回值,这就是您想要的。

明确:

line3 +=''+synset_offset+'\lemon.lexical_entry\ '+iw.next()+'/n'

更新(关于下一个错误):

triple必须tuple具有3个元素,就像函数签名所说的那样:

add(self, (s, p, o))

忽略self,因为您正在调用实例方法。

我很确定那triple是另一种类型,所以请检查一下(最简单的方法是print triplefor语句中)。


查看完整回答
反对 回复 2021-04-02
  • 1 回答
  • 0 关注
  • 200 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信