如何将字符串列表转换为数组? 不使用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'是否是在此使用的正确类型。

解决方法

该错误表明列表中存在不是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",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')