2016-10-22 48 views
0

我使用xlrd讀取了三列中的每個單元格以製作三個列表。然後,我將所有三個列表中的第i個元素附加到一個新列表中,製作一個新列表。Python從xlrd製作的列表中刪除'text'

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 '] 

有沒有辦法取出'文本:'?我將search_terms中的每個列表輸入到Entrez.egquery以搜索pubmed上的結果,並在查詢行中使用'text:',我繼續獲得0個結果。

+0

@anonymous加入'STR()'沒有按」不會改變任何內容,因爲內容是以字符串開始的。 –

+0

這個問題似乎是你的'''xlrd'''',它返回類似於'''Cell''對象的東西。你想要的是*值*,所以你需要使用像'''col_values()''''''row_values()'''。你能發佈生成'''book.nrows'''的代碼嗎? – Markus

回答

1

讓我們假設一個簡單的表格被稱爲 '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,而不是一個字符串u這就是爲什麼有必要通過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)] 
+0

非常感謝! –