使用 numpy.genfromtxt 在 Python 3 中加载 UTF-8 文件

2024-04-05

我有一个从 WHO 网站下载的 CSV 文件(http://apps.who.int/gho/data/view.main.52160 http://apps.who.int/gho/data/view.main.52160,下载,“CSV 格式的多用途表”)。我尝试将文件加载到 numpy 数组中。这是我的代码:

import numpy
#U75 - unicode string of max. length 75
world_alcohol = numpy.genfromtxt("xmart.csv", dtype="U75", skip_header=2, delimiter=",")
print(world_alcohol)

我得到

UnicodeDecodeError:“ascii”编解码器无法解码字节 0xc3 位置 2:序数不在范围(128) 内。

我猜想 numpy 在读取字符串“Côte d'Ivoire”时出现问题。该文件已正确编码为 UTF-8(根据我的文本编辑器)。我正在使用 Python 3.4.3 和 numpy 1.9.2。

我究竟做错了什么?如何将文件读取到 numpy 中?


请注意原来的 2015 年日期。自那以后genfromtxt已获得encoding范围。


在Python3中我可以这样做:

In [224]: txt = "Côte d'Ivoire"
In [225]: x = np.zeros((2,),dtype='U20')
In [226]: x[0] = txt
In [227]: x
Out[227]: 
array(["Côte d'Ivoire", ''],   dtype='<U20')

这意味着我可能可以打开一个“UTF-8”文件(常规,而不是字节模式)和读取行,并将它们分配给数组的元素,例如x.

But genfromtxt坚持使用无法处理更大的字节字符串(ascii)进行操作UTF-8设置(7 字节 v 8)。所以我需要申请decode在某个时刻得到一个U array.

我可以将它加载到“S”数组中genfromtxt:

In [258]: txt="Côte d'Ivoire"
In [259]: a=np.genfromtxt([txt.encode()],delimiter=',',dtype='S20')
In [260]: a
Out[260]: 
array(b"C\xc3\xb4te d'Ivoire",  dtype='|S20')

并申请decode到单个元素:

In [261]: print(a.item().decode())
Côte d'Ivoire

In [325]: print _
Côte d'Ivoire

Or use np.char.decode将其应用于数组的每个元素:

In [263]: np.char.decode(a)
Out[263]: 
array("Côte d'Ivoire", dtype='<U13')
In [264]: print(_)
Côte d'Ivoire

genfromtxt让我指定converters:

In [297]: np.genfromtxt([txt.encode()],delimiter=',',dtype='U20',
    converters={0:lambda x: x.decode()})
Out[297]: 
array("Côte d'Ivoire", dtype='<U20')

If the csv有字符串和数字的混合,这个converters方法将比np.char.decode。只需为每个字符串列指定转换器即可。

(请参阅我之前对 Python2 尝试的编辑)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 numpy.genfromtxt 在 Python 3 中加载 UTF-8 文件 的相关文章

随机推荐

  • 收缩networkx中的节点列表

    我有一本带有节点的字典 supernodes list nx connected components G1 的结果print supernodes is 1 2 3 5 8 6 7 9 10 12 13 4 11 14 15 如何将每个列
  • 将 CNN Pytorch 中的预训练权重传递到 Tensorflow 中的 CNN

    我在 Pytorch 中针对 224x224 大小的图像和 4 个类别训练了这个网络 class CustomConvNet nn Module def init self num classes super CustomConvNet s
  • 设置类变量的Pythonic方法是什么?

    也许我问错了问题 我有这样的代码 class ExpressionGrammar Grammar def init self nonterminals terminals macros rules precedence nontermina
  • 我可以使用 Excel javascript 添加创建工作簿吗?

    Excel javascript 加载项是否有任何等效项可以完成我们在 Word 中使用 context application createDocument 所做的事情 我在 Excel 应用程序对象中没有看到任何创建方法 正如 MSFT
  • 如何限制仅从 C# 中的外部类设置内部类的属性

    我有这样的代码的核心 public class OuterClass public static InnerClass GetInnerClass return new InnerClass MyProperty 1 public clas
  • 如何将 Notepad++ 配置为使用空格而不是制表符?

    Notepad 不断插入制表符 这后来弄乱了我的代码 这种情况不仅发生在我按下 Tab 键时 其他时候也会发生 我希望它使用 4 个空格而不是制表符 如何让 Notepad 插入空格而不是制表符 前往优先菜单下的菜单命令Settings 然
  • Hive - hive 中的逆透视功能

    我有两个表如下 Table A userid code code name property id 0001 1 apple id Y1234 0031 4 mango id G4567 0008 3 grape id H1209 0001
  • 将 pandas 的宽变长

    假设我在 pandas 中有以下数据框 AA BB CC date 05 03 1 2 3 06 03 4 5 6 07 03 7 8 9 08 03 5 7 1 我想将其转换为以下内容 AA 05 03 1 AA 06 03 4 AA 0
  • 比较 C# 和 ColdFusion 之间的密码哈希值 (CFMX_COMPAT)

    我有一个密码哈希值存储在一个表中 并通过以下 Coldfusion 脚本放置在那里 Hash Encrypt Form UserPassword GetSiteVars EnCode 我正在尝试在 C 应用程序中添加一些外部功能 我希望能够
  • 将 php 变量发布到新窗口

    我有一个由数据库动态构建的页面 对于动态构建的每个内容 我希望有一个弹出新窗口的链接 并且该新窗口将根据单击第一页上的哪个项目来填充数据库中的列表 我尝试过 POST 方法并将变量发布到 url 我知道这是危险的 另一个独特之处是 单击的链
  • MATLAB 求最大值一个结构体的

    我试图找到结构的最大值但是max tracks matrix 不起作用 它给我以下错误 使用 horzcat 时出错 CAT 论证维度不一致 你有想法吗 这是我的结构的样子 tracks 1x110470 struct array with
  • Android Edittext光标不可见

    我的应用程序中有一个编辑文本 它将在 Froyo 或 Gingerbread 中正确显示光标 但是在更高版本的 sdks 中 光标是不可见的 我在网上找到的解决方案是设置 android textCursorDrawable null 以便
  • Powershell 中的 CDPATH 功能?

    有没有人实现了等效的行为bash 的 cdpath http www caliban org bash bashtips在 Powershell 中 以前不知道CDPATH 很高兴知道 我为 Powershell 编写了以下内容 funct
  • 以对数刻度显示刻度标签 MS 图表 (log-log)

    我在 Visual Studio 2015 C 中使用 MS Charts 创建了一个具有对数刻度 两个轴 的绘图 见图 我需要在 x 轴上添加更多网格线和相应的标签 我想在 1 2 3 4 和 10 之间以及 10 到 100 20 30
  • 对不受信任(自签名)HTTPS 的 AJAX 调用会默默失败

    我想对使用自签名证书的安全服务器进行 AJAX 调用 在使用我的应用程序的环境中 这很好 我可以向用户提供 CA 证书并让他们在使用应用程序之前安装它 但是 有时 用户会在安装证书之前尝试访问该应用程序 在这些情况下 应用程序会默默地失败
  • 如何将 React 应用程序部署到 Heroku

    我已经使用 React 和 Node js 构建了一个单页天气应用程序 但似乎无法将其部署到 Heroku 到目前为止 我有 在 Heroku 上创建了一个名为 Weather app react node 的新应用程序 在 CLI 上登录
  • 如何在Notepad++中将大写字母转换为小写字母

    我主要使用 Notepad 进行编码 如何将大写字母转换为小写字母 反之亦然 只需选择要更改的文本 右键单击并根据需要选择大写或小写
  • 将 PSD 格式转换为 Gimp 可以读取的格式的方法

    我有一堆 PSD 文件 还有更多 我想将它们转换成我可以使用的格式 我之前曾 一些 成功地使用 Gimp 读取 PSD 但这些文件无法正确读取 有没有办法将 PSD 转换为 XCF 我尝试过 IrfanView 它可以正常显示 PSD 但无
  • 如何在 Python 中将日期时间转换为 UTC 时间戳?

    From http docs python org library time html http docs python org library time html 时间 mktime t 这是 localtime 的反函数 它的论据是 s
  • 使用 numpy.genfromtxt 在 Python 3 中加载 UTF-8 文件

    我有一个从 WHO 网站下载的 CSV 文件 http apps who int gho data view main 52160 http apps who int gho data view main 52160 下载 CSV 格式的多