Python的一些报错记录(持续更新)

1. IndexError: list index out of range

debug报错:{TypeError}‘builtin_function_or_method’ object is not subscriptable
报错原因:csv文件中最后一行有空数据,即在列表list中为[],引发报错。

2. " re.error: missing ), unterminated subpattern at position 1 "

原因及解决:通过python的debug模式找到了出问题的文件是NER结果的7.10.2,其中有出现如“ 斜( ”这种词,导致报错,手动删去后问题解决。

3. 文件编码格式报错

在这里插入图片描述
对于Unicode字符,python解释器需要先将Unicode字符编码为GBK,然后再写入csv文件。但是由于该Unicode字符串中包含一些GBK中无法显示的字符,导致此时提示“’gbk’ codec can’t encode”的错误。
解决方法:尝试了许多网上的解决方案,最后设置了一下输出结果存放的csv文件的编码格式,解决了问题。
在这里插入图片描述

4. Anaconda Prompt中安装包

用conda install安装包时,若出现如下报错,则说明Anaconda相关网站没有这个包,就会报出找不到的错误。
在这里插入图片描述
解决办法:改用pip install安装,成功。

5. No such file or directory

在这里插入图片描述
在这里插入图片描述

原因:cut()函数中的for函数中最后到return就返回了,后续代码不会执行,所以不会生成报错中提示没有的文件。

6. ValueError: not enough values to unpack (expected 2, got 1)

原因:由于自定义的idf语料库的txt文件中,存在空行或换行符\n,以及存在△、$等特殊字符。
解决方法:写了两个函数,用于去除空行、换行符和特殊字符,只保留中文和英文字符。

# 去掉每行头尾空格及空行、换行符\n
def clearBlankLine(lines):
    result = []
    for line in lines:
        line = line.strip()  # 去掉每行头尾空格
        if not len(line):  # 如果是空行
            continue
        result.append(line)
    return result

# 去掉特殊字符,只保留中英文字符
def clearSpecialSymbols(lines):
    result = []
    for line in lines:
        valid1 = re.search('^[a-zA-Z]',line)
        valid2 = re.search('^[\u4e00-\u9fa5]',line)
        if valid1 or valid2:
            result.append(line)
    return result

7. xlrd.biffh.XLRDError: Excel xlsx file; not supported

原因:用指令 conda list 查看已安装包版本,xlrd 更新到了2.0.1版本,只支持.xls文件。

解决办法:

  1. 可以安装旧版xlrd,运行:
conda uninstall xlrd
conda install xlrd==1.2.0
  1. 也可以用openpyxl代替xlrd打开.xlsx文件:
df=pandas.read_excel(‘data.xlsx’,engine=‘openpyxl’)

8. TypeError: ‘list’ object is not callable

原因:callable()是python的内置函数,用来检查对象是否可被调用,可被调用指的是对象能否使用()括号的方法调用,类似于iterable()。
在代码中,由于变量list和函数list重名了,所以函数在使用list函数时,发现list是一个定义好的列表,而列表是不能被调用的,因此抛出一个类型错误。
解决办法:只需修改变量名list为其他就可以了。

注意:在命名变量时要注意,应避免和python的函数名、关键字冲突。

9 空列表遇到for…in…问题

test = []
a = 0
for i in test:   # 由于test是空列表,这一行不成立,所以后边不会执行
	a+=1

10 RuntimeError: view size is not compatible with input tensor‘s size and stride

原因:view()需要Tensor中的元素地址是连续的,但可能出现Tensor不连续的情况,所以先用 .contiguous() 将其在内存中变成连续分布:

out = out.contiguous().view(out.size()[0], -1)
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值