2

xlrd / xlwtのxpはあまりありませんが、データを収集したいファイルの1つにアクセスできました。ディレクトリ内のすべてのファイルからデータを収集し、それを1つのシートに移動したいと思います。どういうわけか、すべてを1つの配列/リストに格納できれば、csvに簡単に出力できると考えていました。これが大変な作業であり、plzが役立つ簡単な方法がある場合、それ以外の場合、私はIdleを使用してアイデアを試し、これまでにこれを考え出しました。

>>> import xlrd, xlwt
>>> book = xlrd.open_workbook('c:\excelTry\Papineau.csv.xls')
>>> book.sheet_names()
[u'Charge Codes', u'Month']
>>> sh = book.sheet_by_index(1)
>>> #produces:
>>> sh.book
<xlrd.Book object at 0x01213BF0>
>>> for x in range(0, 10):
        sh.row_values(x)
[u'William Papineau', u'Pay Period 11', '', '', u' ', u' ', '', '', '', u'Weekly Total', '', '', u' ', '', '', '', '', u'Weekly Total', u'Biweekly', u'Percent of Effort']
[u'Index Number', u'Index Description', 40678.0, 40679.0, 40680.0, 40681.0, 40682.0, 40683.0, 40684.0, '', 40685.0, 40686.0, 40687.0, 40688.0, 40689.0, 40690.0, 40691.0, '', u'Total', '']
[u'E45776', u'Seat Belt Study', '', 8.0, 8.0, 8.0, 8.0, u' ', '', 32.0, '', '', '', '', '', u' ', '', 0.0, 32.0, 0.4155844155844156]
[u'E43457', u'MultiScaleWaterQuality', '', '', '', '', '', 8.0, '', 8.0, '', 5.0, 8.0, u' ', '', '', '', 13.0, 21.0, 0.2727272727272727]
[u'E45125', u'GLOSS', '', '', '', '', '', '', '', 0.0, '', '', '', 8.0, 8.0, '', '', 16.0, 16.0, 0.2077922077922078]
[u'E45131', u'GLOS AOC Trib Monitoring', '', '', '', '', '', '', '', 0.0, '', '', '', '', '', 8.0, '', 8.0, 8.0, 0.1038961038961039]

これにより、リストオブジェクトのように見えますが、それを操作または追加しようとすると、スクリプト化または反復可能ではないというエラーが発生します。ファイルの反復は、os.listdir(path)とforループを使用してosモジュールで処理されます。どんな助けでも大歓迎です!

4

2 に答える 2

3

これまでのコードでは、ワークシートから取得した値を使用して何もしていないようです。たぶん、コードのいくつかが質問に貼り付けられませんでした...

その最後のコード行の出力を含めることができますか?

すべてを1つのリストに保存したいとします。
次のようなものを試してください。

final = []
for rowx in xrange(sh.nrows):
    final.extend(sh.row_values(rowx))

また
、Windowsパスに注意してください。\tシングルバックスラッシュは、次の文字がバックスラッシュとともにエスケープシーケンス(またはタブ)を形成しない場合にのみ機能します。その他のオプション(オプション3がおそらく最適です。使用しない特別な理由がない限り):

  1. 生の文字列:book = xlrd.open_workbook(r'c:\excelTry\Papineau.csv.xls')
  2. スラッシュ:book = xlrd.open_workbook('c:/excelTry/Papineau.csv.xls')
  3. os.path.join
    book = xlrd.open_workbook(os.path.join('c:','excelTry','Papineau.csv.xls'))
于 2011-06-03T15:19:31.640 に答える
1
data = []
for i in xrange(sh.nrows):
    data.append(sh.row_values(i))
it will append each rows from xls file into list "data".
eg: [['a','b'],['c','d'],['e','f']] like this .
于 2015-11-18T10:02:04.843 に答える