我的网站有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
。
如果我在Source类中添加测试方法:
def testCode(self):
a=[]
tokens = self.ris.split("|")
for token in tokens:
if(token.startswith("AU")): a.append(token[5:])
return a
它返回我想要的东西。所以看起来我的方法参数中的属性标记和st有问题。因为每次我想使用它,它都不起作用。
答案 0 :(得分:1)
对此的一个解决方案可能是使用以前的版本启动另一个虚拟env或conda env并尝试再次运行代码。