2013-03-11 6 views
0

У меня есть файл excel (xlsx). Значения считаются значениями Unicode.Чтение значений unicode от excel до строки

wb = xlrd.open_workbook('file.xlsx') 
sh = wb.sheet_by_index(0) 
first_column = sh.col_values(0) 
snd_column = sh.col_values(1) 

Выход в виде:

first_column=['', u'here', u'here i am', u'where', u'where i am'] 
snd_column=['', u'20 km', ' ', u'10 km', u'23 km'] 

Пустые ячейки читаются как обычные пустые строки.

Как получить/прочитать файл непосредственно в форме строк. например

first_coulmn=['', 'here', 'here i am', 'where', 'where i am'] 
snd_coulmn=['', '20 km', ' ', '10 km', '23 km'] 

Я ищу эффективный вычислительный метод. Какие-нибудь советы?

+3

Зачем вам нужны * байтовые строки? –

+0

@Martijn Pieters Это становится громоздким при выполнении операций со словарем с значениями unicode. – Zero

+3

В Python 2, если все, что у вас есть, есть данные ASCII, вы можете свободно сравнивать строки байтов и значения Unicode. Хранение Unicode как ключей dict, а затем просмотр значений с помощью строки байтов работает отлично. –

ответ

0

Как насчет:

first_column = [str(v) for v in first_column] 
+0

Если имеется большое количество столбцов, это сделает код медленным. Я думал, что может быть какой-то метод для вызова чего-то в 'xlrd.open_workbook ('file.xlsx')'? Непосредственно читайте значения unicode в строковой форме. – Zero

0

Вы можете использовать функцию Обл(), чтобы отливать из Юникода в строку. Это то, что вы просите?

-1
  • worksheet.cell_value(row_index,coluna_sample) дает мне -> u'7690088954'
  • str(worksheet.cell(row_index,coluna_sample).value) дает мне -> '7690088954'

Как было предложено aestrivex.