2

XLRD を使用して、Excel ドキュメントのセル内にカプセル化された文字列テキストを読み取って操作しようとしています。コードと、特定の列を印刷することを選択したときに返されるテキストを投稿しています。

import xlrd
data = xlrd.open_workbook('data.xls')
sheetname = data.sheet_names()
employees = data.sheet_by_index(0)

print employees.col(2)

>>>[text:u'employee_first', text:u'\u201cRichard\u201d', text:u'\u201cCatesby\u201d', text:u'\u201cBrian\u201d']

私の意図は、辞書を作成するか、Python で文字列を使用して Excel ドキュメントを参照することです。プログラム内の多くの関数でデータをローカルで操作し、後で (この質問の範囲外で) 2 番目の Excel ファイルに出力したいと考えています。

この余分な情報を取り除くにはどうすればよいですか?

4

2 に答える 2

1

employees.col(2)xlrd.sheet.Cellインスタンスのリストです。(オブジェクトではなく) 列からすべての値を取得するには、次のメソッドCellを使用できます。col_values

values = employees.col_values(2)

これを行うこともできます(私の最初の提案):

values = [c.value for c in employees.col(2)]

しかし、それは を使用するよりもはるかに効率的ではありませんcol_values

\u201c\u201dは、それぞれ Unicode の左と右の二重引用符です。それらを取り除きたい場合は、たとえば、lstrip および rstrip 文字列メソッドを使用できます。たとえば、次のようなものです。

values = [c.value.lstrip(u'\u201c').rstrip(u'\u201d') for c in employees.col(2)]
于 2013-01-31T04:00:25.153 に答える
1

セルの値のみに関心がある場合は、次のことを行う必要があります。

values = sheet.col_values(colx=2)

それ以外の:

cells = sheet.col(colx=2)
values = [c.value for c in cells]

より簡潔で効率的であるためです(Cellオブジェクトは要求に応じてオンザフライで構築されます)。

于 2013-02-01T19:10:57.773 に答える