Python - NameError名称"标题"没有定义

时间:2016-02-15 18:49:15

标签: python python-2.7

我正在使用的数据集位于以下格式的多个文本文件中:

#*TITLE1
#@AUTHOR1,AUTHOR2
#tYEAR
#cpublicationvenue
#index1

每个区块代表一篇论文。在我的数据集中,我有成千上万的这些块。我想将此信息插入到我有多个表的数据库中。我在下面写的代码完美无缺。其他时候,当我尝试填充数据库时,它会随机给我一个错误,如:

NameError: name 'title' is not defined

我现在正处于我想将所有这些数据放入我的数据库的阶段,但是我想确保这个代码已经解释了当一个块例如缺少发布场地线时,在这种情况下只留下该列那一行空白。 这是我写的代码:

import MySQLdb


conn = MySQLdb.connect(host="xx", user="xx", db="xx")
db1 = conn.cursor()


with open("path/to/file", "rb") as f:
    for line in f:
        if line.startswith("#*"):
            title = line[2:]

        elif line.startswith("#t"):
            year = line[2:]  # will ignore first two characters of line

        elif line.startswith("#c"):
            publication_venue = line[2:]

        elif line.startswith("#index"):
            ID = line[6:]

    elif line.startswith("#@"):
        author_list = line.split(",")
        author_list[0] = author_list[0][2:]  

    elif line.strip() == '':

        db1.execute('''INSERT INTO papers(
                ID, TITLE, YEAR, Publication_Venue)
                VALUES (%s,%s,%s,%s,%s)''',
                (ID, title, year, publication_venue))


        for In_order, author in enumerate(author_list, start=1):
            In_order = In_order
            author = author

            db1.execute('''INSERT INTO authors(
                        ID, AUTHOR, In_order) VALUES(%s,%s,%s)''',
                        (ID, author, In_order))


        conn.commit()

        title = None
        year = None
        publication_venue = None
        ID = None
        author_list = None

    else:
        continue

有人可以告诉我为什么我会收到此名称错误,因为我已在我的代码中明确定义了它!

1 个答案:

答案 0 :(得分:1)

您只在第一个recently-updated内定义了title

if

如果你没有到达那里(该行不以if line.startswith("#*"): title = line[2:] 开头),则它未定义。
很明显,因为你指定了以下内容实际上是问题:

  

我在下面编写的代码非常有效有时。其他时候,当我尝试填充数据库时,它会随机给我一个错误。