Python从xlrd制作的列表中删除“文本”

时间:2016-10-22 22:40:59

标签: python xlrd

我使用xlrd来读取三列的每个单元格以生成三个列表。然后,我将所有三个列表的第i个元素附加到一个新列表中,创建一个新的列表列表。

search_terms=[]
for row in range(0, book.nrows):
    search_terms.append([med_name[row], med_school[row], mentor[row]])
print(*search_terms[0:15], sep='\n')
[text:'Andrew Burkeland', 'Weill Cornell Medical College', 'Dave Cutler ']
[text:'Andrew Pence', 'University of Alabama at Birmingham School of Medicine', 'Jack Warran ']

有没有办法取出'text:'?我将search_terms中的每个列表输入Entrez.egquery以在pubmed上搜索结果,并在查询行中使用'text:',我继续获得0结果。

1 个答案:

答案 0 :(得分:2)

我们假设一个简单的表叫做'students.xlsx'

Student     School     Mentor
John Doe    Harvard    Kornberg
Jane Done   Stanford   Pauling

现在使用xlrd

打开它
import xlrd
xl_workbook = xlrd.open_workbook('students.xlsx')
xl_sheet = xl_workbook.sheet_by_index(0)
row = xl_sheet.row(1)

现在让我们来看看各个部分

print(row)
  

[text:'John Doe', text:'Harvard', text:'Kornberg']

print(row[0])
  

text:'John Doe'

print(row[0].value)
  

'John Doe'

问题是row[0]xlrd cell而不是字符串,这就是为什么必须通过value获取内容的原因。

现在让我们为所有行(标题除外)执行此操作:

raw_data = list()
for row in range(1, xl_sheet.nrows):
    raw_data.append(xl_sheet.row(row))

author_list = list()
for raw in raw_data:
    author_list.append(list())
    for r in raw:
        author_list[-1].append(r.value)
print(author_list)
> [['John Doe', 'Harvard', 'Kornberg'], ['Jane Done', 'Stanford',
> 'Pauling']]

或简称:

author_list = [[c.value for c in xl_sheet.row(n)] for n in range(1, xl_sheet.nrows)]