Похоже, ваша проблема в том, что вы ссылаетесь на переменную вне ее области видимости.По сути, то, что происходит, в вашем утверждении if, вы создаете переменную исключительно для использования в рамках if.Фактически, когда вы сказали print vn.firstChild.nodeValue
, вы также можете представить его как любую другую переменную, такую как print undefinedVar
.Происходит то, что вы ссылаетесь (вызываете) на переменную еще до того, как она была определена.
Однако не стоит беспокоиться, поскольку это очень легко исправить.Что мы можем сделать, это просто создать свой vn и протестировать переменные вне области действия if, то есть внутри вашего фактического метода, выполнив следующее:
vn = None
test = None
for DO in range(count) :
atnnames = doc.getElementsByTagName("atnId")[DO]
atn = atnnames.childNodes[0].nodeValue
if atn == line[0]:
vn = doc.getElementsByTagName("vn")[DO]
vncontent = vn.childNodes[0].nodeValue
y = vncontent.encode('utf-8')
# print y
if '-' in y:
slt = (int(y.split('-')[0][-1]) + 1)
test = y.replace(y.split('-')[0][-1], str(slt))
# print test
else:
slt = (int(y.split('.')[-1]) + 1)
test = y.replace(y.split('.')[-1], str(slt))
# print test
else:
#print test
vn.firstChild.nodeValue = test
print vn.firstChild.nodeValue
Это просто создает пустую переменную во внешней области видимости.Я установил значения None
, так как они будут определены после запуска цикла for.Итак, что происходит сейчас, у вас есть переменная, которая была объявлена снаружи и в начале имеет значение None
, но когда вы запускаете цикл for, вы не создаете временную переменную только внутри оператора if, но вы фактически меняетезначение