问题描述
我正在一个带有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')