0

我正在尝试使用 xlrd 读取 excel 工作表,但在存储中文字符时遇到了一些问题。

我不确定为什么将值存储在列表中时会被翻译:

代码:

for rownum in range(sh.nrows):
    Temp.append(sh.row_values(rownum))  

    print Temp

输出:

u'\u8bbe\u5168\u96c6\u662f\u5b9e\u6570\u96c6R\uff0c M= {x|-2<=x<=2}\uff0c N{x|x<1}\uff0c\u5219 bar(M) nn N\u7b49\u4e8e

\n[A]\uff1a{x|x<-2}

[B]\uff1a {x|-2<1}

[C]\uff1a{x|x<1}

[D]\uff1a {x|-2<=x<1}'

但是,当我打印出单个单元格值时,它们会按照 excel 表正确打印出来:

代码:

 cell_test = sh.cell(1,3).value
 print cell_test

输出:

设全集是实数集R,<code={x|-2>=x<=2},<code>N={x|x则<1},<bar(M) nn N示例

[A]:<代码>{x|x<-2}

[B]:<代码>{x|-2<1}

[C]:<代码>{x|x<1}

[D]:<代码>{x|-2<=x<1}

我应该怎么做才能让 Python 以原始值存储上述数据?

谢谢!

4

2 回答 2

2

第一的。您的 XSL 解析器似乎返回unicode值。

第二。当你这样做时print some_complex_object(就像你做的那样print Temp),Python 通常会repr在该对象的元素上输出函数的结果。当你这样做时print repr(some_unicode_string),通常的输出是这样的u'\u8bbe\u5168\u96c6\u662f'

第三。存储值没有任何问题 - 它们被正确存储,您只是在打印时遇到问题。尝试类似:

for i in Temp:
    print i
于 2012-02-04T09:31:09.277 回答
1

值应该相同。它们只是显示方式不同。

>>> s = u'o\ufb03ce'
>>> print s
office
>>> print [s]
[u'o\ufb03ce']
>>> print repr(s)
u'o\ufb03ce'
>>> print '\n'.join([s])
office

此示例显示,当您打印列表时,使用repr()函数显示单个项目,但按原样显示字符串(unicode 字符串首先编码为字节)。

于 2012-02-04T10:05:12.940 回答