【问题标题】:Dealing with bad character UTF 8 python处理坏字符 UTF 8 python
【发布时间】:2020-08-31 17:02:38
【问题描述】:

如何打印和读取编码 utf-8 文件而没有坏字符,我使用的是 pycharm 和 python 3.7

# -*- coding: utf-8 -*-
import pandas as pd
import sys

sys.stdout.reconfigure(encoding='utf-8')

place = pd.read_csv('country.csv', encoding='utf-8', chunksize=13000000, error_bad_lines=False, squeeze= True)
for chunk in place:
    place_list = chunk['name'].tolist()
    print(u"{}".format(place_list))

country.csv

name,
T’Kareseskop
Gröll Seamount
Pinzón Knoll
Pinar del Río Knoll
Piñones Canyon

输出:

T’Kareseskop
Gröll Seamount
Pinzón Knoll
Pinar del Río Knoll
Piñones Canyon

预期输出:

T’Kareseskop
Gröll Seamount
Pinzón Knoll
Pinar del Río Knoll
Piñones Canyon

我使用块是因为country.csv 是一个大文件

【问题讨论】:

    标签: python pandas csv encoding utf-8


    【解决方案1】:

    调用sys.stdout.reconfigure(encoding='utf-8') 不会重新配置您的终端程序(“cmd”窗口),它只会强制 Python 输出 utf-8,即使终端配置不同。

    如果当您删除此调用时,您没有得到正确的字符,那是因为 Python 没有自动找到正确的终端编码。但显然,它不是 utf-8。

    也许,比尝试调整古老的 windows 终端更好的是,安装一个比神秘的“cmd”更好的终端 - 检查这个:https://cmder.net/(我想是 windows,因为所有 Linux 发行版和 Mac OS 都这样做现在默认使用 utf-8 好几年了)

    【讨论】:

    • 谢谢!实际上我的目标是如何使用大熊猫从文件中获取数组输出。我希望它完全像 country.csv 文件一样打印,但以错误字符结尾
    • 当 Python 以 utf-8 发送输出时,您显示的字符替换类型是典型的,但实际显示字符的意思是使用像 latin1 这样的字符映射 - 然后,字符需要 2 个 btes在 utf-8 中最终在该显示器上显示为 2 个字符。
    猜你喜欢
    • 2020-01-20
    • 1970-01-01
    • 1970-01-01
    • 2011-01-22
    • 2012-07-03
    • 1970-01-01
    • 2010-10-21
    • 2014-07-18
    • 2012-05-22
    相关资源
    最近更新 更多