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

时间:2018-02-28 18:23:02

标签: python python-3.x

例如,我有一个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

1 个答案:

答案 0 :(得分:0)

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

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

这符合记事本的行为,除非您选择" Unicode"否则它也会在同一个8位代码页中进行读写。 (又名utf-16-le)或" UTF-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