python3 处理含有非法字符的txt文件,转为csv文件(重点处理了UnicodeDecodeError问题)

本文介绍了如何处理Python在读取和写入CSV文件时遇到的UnicodeDecodeError,包括'utf-8'和'gbk'编码问题,以及如何避免文字被逗号分隔。通过提供一个Python代码示例,展示了清洗非UTF8内容并写入新CSV文件的过程,成功解决了数据清洗和格式化的问题。
摘要由CSDN通过智能技术生成

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


本文能解决的问题

1. UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xce in position 0: invalid continuation byte

2. UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xac in position 6340: illegal multibyte sequence

3. 为什么写入csv的文字被逗号‘,’隔开了

4. 不会操作/靠百度操作csv文件的问题


提示:其实读txt或csv都可以互通,只要一个能读出来,就能格式化转换。
按照我粗浅的理解,txt好读一点,因为我这份数据用csv方法根本打不开,只能改后缀名为txt

一、最终代码

提示:本段为python3语言,为本作者在学习中解决问题后的总结,参考了如下文章
为什么写入csv的文字被逗号‘,’隔开了
python逐行写入到csv文件

# -------------本段代码做第一步数据清洗,去除非utf8的内容,避免出错------------
# 判断是否是中文,或逗号。句号,换行
def is_chinese(uchar):
    if (uchar >= '\u4e00' and uchar <= '\u9fa5') or uchar==',' or uchar=='。' or uchar=='\n':
        return True
    else:
        return False
    
# 判断一行语句,进行检查
def reserve_chinese(content):
    content_str = ''
    for i in content:
        if is_chinese(i):
            content_str += i
    return content_str
# 打开源数据文件txt,创建一个csv文件,读一行txt,写一行csv
def utf_data():
    new_item_csv = 'utf_xihu'
    with open('data/xihu.txt', 'r', encoding='utf-8') as read:
        with open('{}.csv'.format(new_item_csv), 'w', encoding='utf-8', newline='') as f_write:
            writer = csv.writer(f_write, dialect='excel')
            read_line=read.readline()
            while read_line:
#                 去除空行(如果这是一个空行,则跳过)
                if read_line.isspace():
                    read_line=read.readline()
#             写入判断好的数据
#             []的作用是避免新数据被逗号分隔,如果不加[],“新,的,数,据,就,是,这,样”
                writer.writerow([reserve_chinese(read_line)])
                read_line=read.readline()
utf_data()

二、最终效果

去除了非法字符的utf8数据,本处是西湖景区的游客评价
去除了非法字符的utf8数据,本处是西湖景区的游客评价
原来的txt长这样
在这里插入图片描述

总结

是不是瞬间清除了影响后续操作的捣蛋鬼呢~
那些乱七八糟的非法字符,让我后续操作各种报错,本次特地把他们清理了个干净,终于可以安心做分析了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值