我有一个包含两列的Excel文件,第一列是中文,第二列只是一个链接。 我尝试了两种我在这里找到的方法。但它没有工作,我无法在控制台中打印该值,我将设置(pycharm)中的编码变量更改为U8,仍然无法正常工作。 我用过Pandas& xlrd libs,虽然它适用于发布的其他人,但都没有工作。 这是我目前的代码:
from xlrd import open_workbook
class Arm(object):
def __init__(self, id, dsp_name):
self.id = id
self.dsp_name = dsp_name
def __str__(self):
return("Arm object:\n"
" Arm_id = {0}\n"
" DSPName = {1}\n"
.format(self.id, self.dsp_name))
if __name__ == '__main__':
wb = open_workbook('test.xls')
for sheet in wb.sheets():
print(sheet)
number_of_rows = sheet.nrows
number_of_columns = sheet.ncols
items = []
rows = []
for row in range(1, number_of_rows):
values = []
for col in range(number_of_columns):
value = str(sheet.cell(row, col).value)
for a in value:
print('\n'.join([a]))
values.append(value)
print(value)
for item in items:
print (item)
print("Accessing one single value (eg. DSPName): {0}".format(item.dsp_name))
print
显然它不起作用,我只是在放弃之后搞砸了它。
档案:http://www59.zippyshare.com/v/UxITFjis/file.html
答案 0 :(得分:1)
它与编码无关,您无法访问正确的行。
在第24行
for row in range(1, number_of_rows):
你为什么要从1而不是0开始。
尝试for row in range(number_of_rows):
答案 1 :(得分:0)
我遇到的问题实际上并不是在阅读中文字符!我的问题是我们在控制台打印。 我认为打印编码器工作正常,我只是没有读取字符,但这段代码工作正常:
from xlrd import open_workbook
wb = open_workbook('test.xls')
messages = []
links = []
for sheet in wb.sheets():
number_of_rows = sheet.nrows
number_of_columns = sheet.ncols
for row in range(1, number_of_rows):
i = 0
for col in range(number_of_columns):
value = (sheet.cell(row,col).value).encode('gbk')
if i ==0:
messages.append(value)
else:
links.append(value)
i+=1
print(links)
要检查它,我将第一个结果粘贴到selenium驱动程序中(因为我还是要使用它)
element = driver.find_element_by_class_name('email').send_keys(str(messages[0],'gbk'))
它就像一个魅力!