2017-05-11 5 views
0

Ich bin wie dieses eine Spalte aus der Excel-Lesen:Wie liest man eine Excel-Spalte in eine Liste ein?

import xlrd 
import openpyxl 
book = xlrd.open_workbook("English corpus.xlsx") 
sheet = book.sheet_by_index(0) 

data=[] 
for row_index in xrange(1, sheet.nrows): # skip heading row 
    timestamp, text, header, transporter, device_type = sheet.row_values(row_index, 
                     end_colx=5) 
    print (text) 
    data.append(text) 

Und dann die Zellen aus der text Spalte anhängen (text Spalte ist eine riesige Spalte über 10000 Einträge) in der data Liste. Auf diese Weise werden Daten im Unicode-Typ-Format angehängt. Und ich kann es nicht in Zeichenfolge konvertieren (UnicodeEncode-Fehler erhalten - alles versucht).

Könnte jemand mir bitte von einer anderen Möglichkeit erzählen, die Zellen aus einer Excel-Spalte in eine Python-Liste zu lesen, so dass das Listenelement nur Zeitzeichenfolge und nicht Unicode enthält?

+0

https://blogs.harvard.edu/rprasad/2014/06/16/reading-excel-with-python-xlrd/ – Dadep

+0

Welche Version von Python? Ist Ihre Frage tatsächlich * Wie konvertiere ich eine Unicode-Zeichenfolge in ASCII? * – wwii

+0

Nein, ich brauche eine andere Möglichkeit, die Excel-Zellen in eine Liste hinzufügen, so dass ihre Art nicht Unicode an erster Stelle ist – Arman

Antwort

0

bearbeiten

Wenn Sie openpyxl/xlrd perfer versuchen Sie können Daten auf unicode kodieren. z.B.

s = u'about' 
>>> s 
u'about' 
>>> s.encode("utf8") 
'about' 
>>> 

für eine Liste von Daten, können Sie die Liste Verständnis als

data = [s.encode("utf8") for s in data] 

Und einfachen Import von Excel-Spalten können zur Liste verwenden können Sie pandas versuchen, die xls Daten in ein pandasdataframe und dann zu laden Senden Sie die dataframe an eine list.

Dies wird effizienter sein als pandas ist in der Lage, eine große Menge von Daten zu handhaben und es ist relativ einfacher zu manipulieren.

Konvertierung zwischen Zeichenfolgen/Unicode usw. werden auch auf der Pandas-Ebene behandelt.

Hier ist ein Beispiel. So

file_name = 'words.xlsx' 
import pandas as pd 
xl_workbook = pd.ExcelFile(file_name) # Load the excel workbook 
df = xl_workbook.parse("Sheet1") # Parse the sheet into a dataframe 
aList = df['names'].tolist() # Cast the desired column into a python list 

während print aList zeigen als Unicode-Daten.

>>> print aList 
    [u'ability (noun)', u'able (adjective)', u'about (preposition)', u'about (adverb)', u'above (adverb)', u'above (preposition)'] 

können Sie die Liste Verständnis verwenden, um Daten zu string zu konvertieren.

>>> [str(i) for i in aList] 
['ability (noun)', 'able (adjective)', 'about (preposition)', 'about (adverb)', 'above (adverb)', 'above (preposition)'] 
Verwandte Themen