python3 输出中文到csv显示乱码

  • 问题描述

想要存储对新闻页面的解析结果,安装数据库一直没有成功,所以打算先存入csv文件试试,就出现了编码的问题,初始代码是

        #存储解析到的内容
        with open('news_detail.csv','w',newline='',encoding="utf-8") as file:
            fieldnames = ['title','author','publish_time','sub_title','content','commentsNum']
            writer = csv.DictWriter(file,fieldnames = fieldnames)

            writer.writeheader()
            writer.writerow({'title':title,'author':author,'publish_time':time,'sub_title':subtitles,'content':contents,
                             'commentsNum':commentNum})

open方法的newline=' '和encoding = "utf-8"参数都是看了网上的解决方案加上去的,但是都没有解决问题,输出到的csv文件显示为

  • 仍然是在网上搜索,看到了下面这种参数设置方式,成功解决了乱码的问题
with open('news_detail.csv','w',newline='',encoding="utf-8-sig") as file:
  • csv文件中的中文显示正常,行里的内容也能和列名对应上了。

### 解决Python输出CSV文件时出现的中文乱码问题 为了确保在Python中导出CSV文件时不出现中文乱码,可以采取以下措施: #### 添加BOM头 对于Windows环境下的Excel,默认情况下会期望带有BOM(Byte Order Mark)标记的UTF-8编码文件。因此,在创建CSV文件时应加入BOM头。 ```python import csv with open('output.csv', 'w', newline='', encoding='utf-8-sig') as csvfile: writer = csv.writer(csvfile) writer.writerow(['姓名', '年龄']) writer.writerow(['张三', 25]) ``` 这段代码通过指定`encoding='utf-8-sig'`来添加BOM头部信息[^1]。 #### 使用正确的字符集 当处理包含多种语言文字的内容时,建议始终采用统一且广泛兼容的字符集——即UTF-8编码方式。这有助于减少因不同平台间字符集差异而引发的问题。 #### 处理已存在的CSV文件 如果已经有一个未正确编码的CSV文件,则可以通过工具或编程手段将其重新编码为带BOM的UTF-8格式。例如利用Python中的`codecs`库读取并重写文件: ```python import codecs input_file = "original.csv" output_file = "converted_with_bom.csv" with codecs.open(input_file, 'r', 'gbk') as sourceFile: with codecs.open(output_file, 'w', 'utf-8-sig') as targetFile: contents = sourceFile.read() targetFile.write(contents) ``` 此段代码展示了如何将GBK编码的CSV文件转换成具有BOM标志位的UTF-8版本[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值