错误UnicodeDecodeError: 'ascii' codec can't decode byte

用read()读取txt文件时遇到的错误
UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xa1 in position 1022: ordinal not in range(128)

源代码如下:

    with open(filesource) as f:
        r=re.findall(pattern,f.read())

错误出在f.read().

改写后代码如下:

    with open(filesource,'rb') as f:
        temp=f.read().decode('utf-8','ignore')
        r=re.findall(pattern, temp)

用二进制读入再解码。其中decode用utf-8和ascii都可以,但ignore必须有,否则还是相同的错误。具体原因还不清楚,待查。
参考解决方法

另外在遍历文件夹的时候会读入隐藏文件,导致奇怪的结果,解决办法是判断文件后缀。具体如下:

    for txtName in os.listdir(file_path):
        postfix=os.path.splitext(txtName)[1]
        if postfix=='.txt':
        ……
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值