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

【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 音量自动减小啦!日历自动翻页
  • ¥15 微软硬件驱动认证账号申请
  • ¥15 有人知道怎么在R语言里下载Git上的miceco这个包吗
  • ¥15 GPT写作提示指令词
  • ¥20 如何在cst中建立这种螺旋扇叶结构
  • ¥20 根据动态演化博弈支付矩阵完成复制动态方程求解和演化相图分析等
  • ¥20 关于DAC输出1.000V对分辨率和精度的要求
  • ¥15 华为超融合部署环境下RedHat虚拟机分区扩容问题
  • ¥15 哪位能做百度地图导航触点播报?
  • ¥15 请问GPT语言模型怎么训练?