*SNeutroNS* 2024-04-30 22:34 采纳率: 0%
浏览 4

【Python自定义函数】原代码运行,代码放入自定义函数中报错

代码放入自定义函数中报错:
原代码,目的是去除万恶'\u202a'

csvfilename = r'D:\R\R\data\taobao_data.csv'
csvfilename = csvfilename.strip('\u202a')#除去不可见字符
dta = pd.read_csv(csvfilename, encoding = 'gbk') #encoding不可去除

不想每次等报错后再来运行这三行代码,于是写下:

def easyread(a):
    import pandas as pd #导入pandas
    if '\u202a' in a: #检查有无万恶字符
        a = a.strip('\u202a')
        data = pd.read_csv(a, encoding = 'gbk')
        return data
    else:
        data= pd.read_csv(a)
        return data
data1=easyread(r'D:\R\R\data\taobao_data.csv')

报错:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb7 in position 354: invalid start byte

为什么原代码运行后没有问题,加入自定义函数就出现了编码问题呢?如何改进我的代码?

按回答更新后,仍然报同样的错:

def easyread(a):
    import pandas as pd
    if '\u202a' in a:
        a = a.strip('\u202a')
        try:
             data = pd.read_csv(a,encoding = 'gbk')
        except UnicodeDecodeError:
            data = pd.read_csv(a,encoding = 'utf-8')
        except UnicodeDecodeError:
            data = pd.read_csv(a,encoding = 'gb18030')
        except UnicodeDecodeError:
            data = pd.read_csv(a,encoding = 'ansi')
        return data
    else:
        data= pd.read_csv(a)
        return data
data1=easyread('D:\\R\\R\\data\\taobao_data.csv')

  • 写回答

5条回答 默认 最新

  • 码农阿豪 Java领域优质创作者 2024-04-30 22:34
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题分析: 在原代码中,csvfilename为字符串类型。使用strip函数去除字符串中的不可见字符\u202a。 在自定义函数中,参数a同样为字符串类型。使用strip函数去除字符串中的不可见字符\u202a。但在读取csv文件时,使用的编码不同,原代码使用gbk编码,而自定义函数中使用utf8编码。 因此,在读取含有中文字符的csv文件时,使用不同的编码会导致编码错误。 改进方法: 在自定义函数中,可以增加一个参数encoding用于指定编码格式。 修改后的代码:
    import pandas as pd
    def easyread(a, encoding='utf8'):
        if '\u202a' in a:
            a = a.strip('\u202a')
            data = pd.read_csv(a, encoding=encoding)
            return data
        else:
            data = pd.read_csv(a)
            return data
    data1 = easyread(r'D:\R\R\data\taobao_data.csv', encoding='gbk')
    

    在调用自定义函数时,可以指定csv文件的编码格式。这样就可以避免编码错误。 参考资料: pandas.read_csv

    评论

报告相同问题?

问题事件

  • 修改了问题 4月30日
  • 修改了问题 4月30日
  • 创建了问题 4月30日

悬赏问题

  • ¥15 用matlab求微分方程初值问题
  • ¥15 vscode下编写第三方库opencv与pcl代码时没有代码提示
  • ¥15 能够跑通不报错,如何解决?(标签-matlab)
  • ¥15 MOS在RDS较大,频率高时开关波形异常
  • ¥15 SCENIC分析报错求解答
  • ¥15 ceph初始化mon不成功 下图不报错 这个是什么元
  • ¥15 数学建模数学建模少ai
  • ¥35 这个等效电路图是什么意思?(答疑)(有没有不是chat的,我就是在chat搜不到才来问的,chat还开了VIP)(可以追加酬金)
  • ¥200 基于同花顺supermind的量化策略脚本编辑
  • ¥15 黄永刚的晶体塑性子程序中输入的材料参数里的晶体取向参数是什么形式的?