首页 > 解决方案 > 如何将字符串列表转换为数组?(不使用 NumPy)

问题描述

我正在开发一个带有python接口和其他程序的项目。我需要从 excel 文件中导入数据并使用存储在数组中的数据以供进一步使用。excel文件的数据是纯文本。

到目前为止,我设法将数据转换为字符串列表。现在我正在努力将列表转换为数组,而不是使用 numpy. 至于这个项目,我正在开发一个不适用于 numpy 的接口,这就是我必须使用数组模块的原因。

以下是相关代码的一部分:

from array import array

data_list = []
for i in ws.values:
    data_list.append(i)
print(data_list)

data_array = array('u', data_list))
print(data_array)

第一行代码运行良好。问题出现在我要创建数组的行中。这样做我想使用列表变量 (data_list) 的变量,因为我不必提示所有 50 多个字符串。

data_array = array('u', data_list))

出现以下错误:

TypeError:数组项必须是 unicode 字符

我找不到通过互联网浏览的 unicode 字符。我该如何解决这个问题?还是有其他方法可以将字符串列表转换为数组(不使用 NumPy)?

我也想知道 'u' 是否是在这里使用的正确类型。

标签: pythonarrayslisttypeerrorpython-unicode

解决方案


该错误表明列表中存在非 unicode 字符的值——这些值可能是数字,也可能是空字符串或长度超过一个字符的字符串。

>>> import array
>>> array.array("u", "Hello World!")  # string of characters – fine
array('u', 'Hello World!')
>>> array.array("u", ["Hello", "World!"])  # list of strings – error!
TypeError: array item must be unicode character
>>> array.array("u", ["1", "2", "3", "4"]) # list of characters – fine
array('u', '1234')
>>> array.array("u", ["1", 2, 3, "4"])  # list of characters/numbers - error!
TypeError: array item must be unicode character

将所有值转换为字符串。根据预期的数据格式,可以为每个单词或str.join所有单词创建单独的数组。

>>> data = ["Hello World!", "Dear", 5]
>>> array.array("u", '\n'.join(str(line) for line in data))
array('u', 'Hello World!\nDear\n5')

推荐阅读