更新Django和Python upd后,Python不再工作

2024-06-11 21:58:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我的网站有python代码。你知道吗

python --version
Python 2.7.13
./manage.py --version
1.11.11

在我的服务器更新之前,一切正常。一个函数必须读入一个文件,其中我有如下内容:

1,"TY - JOUR|T1 - BLABLABLA|.........|AU - name1|AU - name2|......"

我使用以下python代码:

from django.db import models
.....

class Sources(models.Model):
    sourceid = models.IntegerField(primary_key=True)
    ris = models.TextField()
    class Meta:
        db_table = u'sources'

    def extractChain(self,tokens,st):
        for token in tokens:
            if(token.startswith(st)): break

        result = token[5:]

        if(st == "TY"):
            result={
                "JOUR": "journal",
                "BOOK": "book",
                "":""
            }[result]

        return result

    def author(self,tokens,st):
        a=[]
        for token in tokens:
           if(token.startswith(st)): a.append(token[5:])
        return a

    def extractRisVal(self,st):
        tokens = self.ris.split("|")
        result={
            "TY": self.extractChain(tokens,st),
            "T1": self.extractChain(tokens,st),
            "JO": self.extractChain(tokens,st),
            "VL": self.extractChain(tokens,st),
            "IS": self.extractChain(tokens,st),
            "SP": self.extractChain(tokens,st),
            "EP": self.extractChain(tokens,st),
            "PY": self.extractChain(tokens,st),
            "AU": self.author(tokens,st),
            "M1": self.extractChain(tokens,st),
            "ER": self.extractChain(tokens,st)
        }[st]

        return result

Source.sourceid给出1。没关系。但是当我使用方法extractRisVal(self,st)时,比如:

extractRisVal("TY")

它按文字返回extractRisVal("TY"),而它应该是journal。你知道吗

如果在源类中添加测试方法:

def testCode(self):
    a=[]
    tokens = self.ris.split("|")
    for token in tokens:
        if(token.startswith("AU")): a.append(token[5:])
    return a

它还我想要的。看来我对方法参数中的属性token和st有问题。因为每次我想用它,它都不起作用。你知道吗


Tags: selftokenforreturnifmodelsdefresult