我目前正在尝试使用变量来创建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 triple
在for
语句中)。
添加回答
举报
0/150
提交
取消