Python操作专员 发表于 2021-8-22 09:06:30

hrpzcf 发表于 2021-8-22 09:26:00

本帖最后由 hrpzcf 于 2021-8-22 09:27 编辑

进入了if shi in transPrivinceName.keys():这个分支,当然就没有val这个变量,下面的text.append(val)就报错。你的代码逻辑还要修改

gdmao002 发表于 2021-8-22 11:38:40

本帖最后由 gdmao002 于 2021-8-22 12:36 编辑


for i in f:
    threeCode = ''
    text = i.replace('\n', '').split(',')
    textCode = text
    year = text
    shi = text
    dw = text
    if shi in transPrivinceName.keys():
      threeCode = transPrivinceName
    else:
      for key, val in transPrivinceName.items():
            if key in dw:
                threeCode = val
                break###一旦找到就停止本次循环
            else:
                threeCode = ''
    if threeCode != '':
      text.append(val)
      f1.write(','.join(text) + '\n')###再次补充上
    else:
      text.append(textCode[:2])
      f1.write(','.join(text) + '\n')###这个是直接写入,手工验证等真的需要的时候再找出来
      f2.write(','.join(text) + '\n')

这是你错误内的代码
然后我给你说下你为何错误
你可以想下如果你for i in f: 【第二行】的时候 第一个 判断的时候走的是【第九行】if shi in transPrivinceName.keys():
然后执行了这个 【第十八行】if threeCode != '':那么【第十九行】里面的变量var哪里来?它又是指向哪里?所以你的错误就是在变量未定义之前 给他使用了。导致了报错,明白了吗
解决办法 前面定义个var变量的赋值 或者 整个循环逻辑修整下。毕竟你的代码只有你懂要做什么。我们最多只是提示下你要怎么操作,不可能面面俱到帮你修改到位,毕竟代码是你写的。我也通过你错误判断你这至少都要将近1000行代码了吧?那么别人更不可能帮你修改了,最多就提示你要怎么做
页: [1]
查看完整版本: local variable 'val' referenced before assignment