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

我目前正在尝试使用变量来创建N个三元组的图形,分配变量没有任何麻烦,但是我一直收到错误消息。这是代码:


from rdflib import Namespace, URIRef, Graph

from StringIO import StringIO



xmlns = "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')  


森栏
浏览 201回答 1
1回答

慕村225694

您尝试使用来连接“方法” 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语句中)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python