在python列表中删除无

时间:2017-07-07 16:31:47

标签: python excel openpyxl

Q1。
enter image description here

我希望输出为:

[Randy, Shaw]

输出看起来像

['Randy', 'None', 'None', 'Shaw', 'None', 'None']

但它并没有删除“无”值 这是我的代码..

from openpyxl import load_workbook
workbook = load_workbook('C:/Users/Desktop/test.xlsx')
print(workbook.get_sheet_names())

sheet=workbook.get_sheet_by_name('marks')

iterheaders = iter(sheet[1])
headers = [str(cell.value) for cell in iterheaders if cell is not None and cell != '']

Keyword_list = list(filter(None, headers))

我甚至尝试了以下但是它也没有用:

Keyword_list = [i for i in headers if (None) != len(i)]

Q2。在相同的代码中,如果我想通过其索引而不是在openpyxl中的名称来获取工作表。我该怎么做?

2 个答案:

答案 0 :(得分:2)

你可以这样过滤:

s = ['Randy', 'None', 'None', 'Shaw', 'None', 'None']

s = [i for i in s if i != "None"]

请注意,您的列表中包含字符串"None",而不是对象None

第二季度:

workbook = load_workbook('C:/Users/Desktop/test.xlsx')

sheet = wworkbook.worksheets[0] #here, either loop over or access by whatever index you want.

答案 1 :(得分:1)

您的无值不是文字None类型值。他们的弦乐。因此,您需要针对字符串测试它们。例如:

>>> lst = ['Randy', 'None', 'None', 'Shaw', 'None', 'None']
>>> [el for el in lst if el != 'None']
['Randy', 'Shaw']
>>>