我正在使用openpyxl
库从Excel表读取数据。示例单元格可能包含一个列表,如[[0, 1, 2, 3], [4, 5, 6, 7]]
,整数如5
,或字符串{
整数正确地读取为整数,但字符串和列表都以unicode格式读取:
print "{} is {}".format(data, type(data))
收益率
^{pr2}$我想防止列表被读取为unicode,或者找到一个适当的方法将unicode转换为列表和字符串。在
以下是修复此问题的失败尝试:
def remove_unicode(data):
if isinstance(data, unicode):
return data.encode('utf-8')
当然,这样做的问题是列表作为字符串返回。如果返回字符串中的第一个和最后一个字符是[
和]
,那么我可以通过将类型更改为list来改进这一点,但这看起来很笨拙。我怀疑一个更好的解决方案是首先防止我的列表和字符串被读取为unicode。在
它不能包含这样的列表,因为列表不是Excel数据类型。您所拥有的只是一个字符串,openpyxl正确地将其解释为一个字符串,而不是试图猜测您是否希望它被解释为一个以某种方式编码的对象。(见禅宗:“面对模糊,拒绝猜测的诱惑。”)
如果要将类似Python整数列表的字符串表示形式的内容转换为列表,可以使用^{} :
或者(在本例中,无论如何)},因为我使用的是python3。在
json.loads
。注意,我得到str
作为数据类型,而不是{相关问题 更多 >
编程相关推荐