【问题标题】:Reading Korean through a CSV in Python通过 Python 中的 CSV 阅读韩语
【发布时间】:2018-04-05 11:02:04
【问题描述】:

我在将包含英语和韩语字符的 CSV 文件读取到 Python 中时遇到问题,我在没有韩语的情况下测试了我的代码,它运行良好。

代码(Python - 3.6.4)

import csv
with open('Kor3.csv', 'r') as f:
    reader = csv.reader(f)
    your_list = list(reader)
print(your_list)

错误

返回 codecs.charmap_decode(input,self.errors,decoding_table)[0] UnicodeDecodeError:“charmap”编解码器无法在位置解码字节 0x8d 2176: 字符映射到未定义

CSV 文件输出:这已从 Excel 转换为 unicode 文本,然后文件名更改为 CSV。认为这是问题的路线。 从 Excel 或其他格式读取会更好吗?

示例输入(2 列)

생일 축하해요 生日快乐

【问题讨论】:

  • 如果您使用的是 Python 2.x,可以直接替换内置的 csv 模块并支持 Unicode:unicodecsv

标签: python


【解决方案1】:

只需要在打开文件时声明编码即可:

with open('Kor3.csv', 'r', encoding='utf-8') as f:

【讨论】:

    【解决方案2】:

    使用 python 3. csv 函数默认使用 unicode 读取

    【讨论】:

    • 感谢您的回答。我遇到的问题是从 Excel 转换为 CSV 时韩语被转换为问号,因此是 Unicode 文本编码,
    【解决方案3】:

    最后,我只是从 excel 文件中导入,认为这是 csv 而不是 python 的问题。谢谢你的帮助。

    from xlrd import open_workbook
    
    wb = open_workbook('Korean.xlsx')
    values = []
    for s in wb.sheets():
        #print 'Sheet:',s.name
        for row in range(1, s.nrows):
            col_names = s.row(0)
            col_value = []
            for name, col in zip(col_names, range(s.ncols)):
                value  = (s.cell(row,col).value)
                try : value = str(int(value))
                except : pass
                col_value.append((value))
            values.append(col_value)
    print(values) #test
    print(values[0][1],values[1][1]) #test2
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多