有没有办法直接从csv(python 3)打印特殊字符(如下标数字)

问题描述 投票:-1回答:1

例如,我有一个csv:H 2 O in,如何让python读取csv并输出下标字符的任何实例?这是我的代码(一些缩进变得奇怪但忽略了):

    with open('sciencequestions.csv', 'r') as file:
    file = csv.reader(file, delimiter=';')
    for row in file:
        if row[0] == chapter:
            enter = input(row[1])
            if enter is '':
                print(row[2],'\n')
            else:
                print(row[2], '\n')
            enter = input()
            if enter is '':
                continue
            else:
                continue
        else:
            continue
python python-3.x
1个回答
0
投票

Python 3可以读取包含下标的Unicode字符的文件。

但是,在Windows平台上,open将使用mbcs模式,该模式使用8位代码页进行用户的区域设置。例如。西欧的Windows机器将使用windows-1252代码页。

这与记事本的行为相匹配,除非您选择“Unicode”(aka utf-16-le)或“UTF-8”,否则它也会在同一个8位代码页中读取和写入。其他MS产品也默认使用相同的有限8位代码页,例如Excel。

不幸的是,8位代码页只支持256个字符,因此仅限于最常见的字符。要使用代码页之外的字符,需要使用“Unicode”或“UTF-8”进行编码。

在Python中打开文件时,您将通过设置编码来覆盖默认行为。

“Unicode”(Aka utf-16-le)

open('sciencequestions.csv', 'r', encoding='utf-8')

“UTF-8”

open('sciencequestions.csv', 'r', encoding='utf-16-le')

还要记住,Windows控制台本身也不支持8位代码页之外的字符。如果要在控制台中打印,请使用https://github.com/Drekin/win-unicode-console

© www.soinside.com 2019 - 2024. All rights reserved.