XLRD разделяя запятую значения ячейки - PullRequest
0 голосов
/ 07 января 2020

Я использую библиотеку XLRD для чтения определенной ячейки листа Excel. Эта ячейка может иметь или не иметь несколько значений, разделенных запятыми.

comma separated values in a cell

Ниже приведен фрагмент кода

from xlrd import open_workbook
from argparse import ArgumentParser as parser

parse = parser()
parse.add_argument('-p', '--path', action='store', dest='path', help='mention the excel sheet path')
args = parse.parse_args()

excelList = []

book = open_workbook(args.path)
dep_cms = book.sheet_by_index(1)
for row_index in range(1, dep_cms.nrows):
    excelList.append(dep_cms.cell(row_index, 8).value)

print(excelList)

for name in excelList:
    print('Dependent CMS is {}'.format(name))

Это вывод на печать, подобный этому ...

['187013, 187014, 187015']
Dependent CMS is 187013, 187014, 187015

Он обрабатывает значения, разделенные запятыми, как одну строку.

Идеальный результат должен быть таким, как показано ниже

['187013', '187014', '187015']
Dependent CMS is 187013
Dependent CMS is 187014
Dependent CMS is 187015

Как разделить их на значения CS? Я знаю, что мы можем использовать split для разделения строки. Но как использовать это в этом контексте?

С уважением


PS:

Основываясь на предложении в разделе комментариев, я попытался разделить

Результат был примерно таким:

[['187013', ' 187014']]
Dependent CMS is ['187013', ' 187014']

Если я использую пробел вместо запятой в качестве разделителя, то результат будет следующим:

[['187013,', '187014']]
Thy name is ['187013,', '187014']

Создание массива внутри массива, который не то, что я хочу.

Основываясь на предложении ответа, сработал следующий фрагмент.

excelList.extend([x.strip() for x in dep_cms.cell(row_index, 8).value.split(',')])

Ответы [ 2 ]

1 голос
/ 07 января 2020

Попробуйте:

excelList = []
for row_index in range(1, dep_cms.nrows):    
    excelList.extend([x.strip() for x in dep_cms.cell(row_index, 8).value.split(',')])
0 голосов
/ 07 января 2020

Возможно, этот фрагмент поможет. Он работает, разделяя имя запятыми и превращая этот новый список в массив.

name = ['187013, 187014, 187015']
names = name[0].split(",") # This separates the first el of name on the comma
for id in names:
  print ("Dependent CMS is " + id.strip())

# prints:
Dependent CMS is 187013
Dependent CMS is 187014
Dependent CMS is 187015
...