当前位置: 首页 > 面试题库 >

具有UTF-8数据的Python CSV DictReader

夏侯弘光
2023-03-14
问题内容

AFAIK,Python(v2.6)csv模块默认情况下无法处理unicode数据,对吗?在Python文档中,有一个有关如何从UTF-8编码文件读取的示例。但是此示例仅将CSV行作为列表返回。我想按名称访问行列,csv.DictReader但方法是使用UTF-8编码的CSV输入文件。

谁能告诉我如何有效地做到这一点?我将必须处理100兆字节大小的CSV文件。


问题答案:

我自己想出了一个答案:

def UnicodeDictReader(utf8_data, **kwargs):
    csv_reader = csv.DictReader(utf8_data, **kwargs)
    for row in csv_reader:
        yield {unicode(key, 'utf-8'):unicode(value, 'utf-8') for key, value in row.iteritems()}

注意:此信息已更新,因此根据注释中的建议对密钥进行了解码



 类似资料:
  • 问题内容: 我有以下代码,我想使输出流使用utf-8。基本上我有这样的字符,所以看起来像是编码问题。 我看过很多使用…的例子 我当前的代码是… 是否可以在不必使用OutputStreamWriter的情况下将此对象定义为UTF-8? 谢谢, 问题答案: 否。您不能指定编码,这非常烦人。它始终使用系统默认编码。只是吸起来,并使用包装一个。当然,您仍然可以将OutputStreamWriter包装在B

  • 问题内容: 我有一个具有UTF-8字符集的MySQL表,并尝试通过PHP表单插入该表时,数据库显示以下错误: PDOStatement :: execute():SQLSTATE [HY000]:常规错误:1366错误的字符串值:’\ xE8’为列… 有问题的字符是“cat”,但考虑到数据库和表设置为UTF-8,我不明白为什么这应该是一个问题。 编辑 我已经直接从mysql终端尝试过,并且遇到了同

  • 我尝试用JasperReport导出CSV文件,问题是当我想打印像“€”这样的货币时。 当我搜索解决方案时,我意识到这是关于文件编码的!我写这个代码! JasperReport导出的文件编码在“没有BOM的UTF-8”上。所以当我用Excel打开文件时,“€”看起来像“,”。但是当我用记事本打开文件时,“€”看起来像“€”。 在记事本上,我将文件编码转换为UTF-8(我认为是BOM),我保存文件。

  • 问题内容: 这里有两个问题。我有一组通常是带有BOM的UTF-8文件。我想将它们(理想情况下)转换为没有BOM的UTF-8。似乎可以解决这个问题。但是我真的看不到任何有关用法的好例子。这将是处理此问题的最佳方法吗? 同样,如果我们能够处理清楚知道的不同输入编码(看到的ASCII和UTF-16),那将是理想的。看来这一切都是可行的。是否有一种解决方案可以采用任何已知的Python编码并以UTF-8格

  • 我正在处理一个使用UTF-8编码了两次的遗留文件。例如,编码点()本应编码为,但改为编码为(是的UTF-8编码,是的UTF-8编码)。 假设数据在CP-1252中编码,则执行第二次编码。 为了回到UTF-8编码,我使用了以下(似乎错误)命令 我的问题是iconv似乎无法转换回一些字符。更准确地说,iconv无法转换UTF-8表示形式包含映射到CP-1252中控制字符的字符。一个例子是代码点ρ():

  • 嗨,我试图使我在UTF-8兼容的应用程序之一。我的环境如下:linux操作系统,apahce网络服务器作为超文本传输协议监听器,tomcat作为servlet引擎 配置了mod_jk和tomcat的apache s使用ajp连接器。 我已经从少数网站上阅读了UTF-8的基本指南,并根据建议尝试了以下方法 为服务器中的连接器设置和。xml 设置语言bashrc/. file使用 将apache服务器