3

ff: 行/列構造の Excel ファイルがあります。

ID   English   Spanish   French
 1   Hello     Hilo      Halu
 2   Hi        Hye       Ghi
 3   Bus       Buzz      Bas

Excel ファイルを読み取り、行と列の値を抽出し、英語、スペイン語、フランス語の列に基づいて 3 つの新しいファイルを作成したいと思います。

だから私は次のようなものがあります:

英語ファイル:

"1" = "Hello"
"2" = "Hi"
"3" = "Bus"

私はxlrdを使用しています。ファイルの内容を開いたり、読んだり、印刷したりできます。ただし、これはこのコマンドを使用して取得したものです (Excel ファイルは既に開いています)。

for index in xrange(0,2):
    theWord = '\n' + str(sh.col_values(index, start_rowx=index, end_rowx=1)) + '=' + str(sh.col_values(index+1, start_rowx=index, end_rowx = 1))
    print theWord

出力:

[u'Parameter/Variable/Key/String']=[u'ENGLISH'] <-- is this a list?, didn't the str() use to strip it out?

あそこで何してるの?角かっこを削除するにはどうすればよいですか?

4

3 に答える 3

4

これuはユニコード文字列であることを意味し、を呼び出すとそこに配置されますstr()。文字列をファイルに書き出すと、そこにはありません。取得しているのは、列から1行です。これは、使用しているためend_rowx=1、1つの要素を持つリストが返されるためです。

列の値のリストを取得してみてください。

ids = sh.col_values(0, start_rowx=1)
english = sh.col_values(1, start_rowx=1)
spanish = sh.col_values(2, start_rowx=1)
french = sh.col_values(3, start_rowx=1)

次に、zipそれらをタプルリストに入れることができます。

english_with_IDS = zip(ids, english)
spanish_with_IDS = zip(ids, spanish)
french_with_IDS = zip(ids, french)

次の形式になります。

("1", "Hello"),("2", "Hi"), ("3", "Bus")

ペアを印刷する場合:

for id, word in english_with_IDS:
       print id + "=" + word

col_values列値のリストを返します。単一の値が必要な場合は、を呼び出すことができますsh.cell_value(rowx, cellx)

于 2013-02-18T08:36:06.920 に答える
3
import xlrd

sh = xlrd.open_workbook('input.xls').sheet_by_index(0)
english = open("english.txt", 'w')
spanish = open("spanish.txt", 'w')
french = open("french.txt", 'w')
try:
    for rownum in range(sh.nrows):
        english.write(str(rownum)+ " = " +str(sh.cell(rownum, 0).value)+"\n")
        spanish.write(str(rownum)+ " = " +str(sh.cell(rownum, 1).value)+"\n")
        french.write(str(rownum)+ " = " +str(sh.cell(rownum, 2).value)+"\n")
finally:
    english.close()
    spanish.close()
    french.close()
于 2013-02-18T09:22:33.120 に答える
2

パンダを使う:

In [1]: import pandas as pd

In [2]: df = pd.ExcelFile('test.xls').parse('Sheet1', index_col=0) # reads file

In [3]: df.index = df.index.map(int)

In [4]: for col in df.columns:
   ...:     column = df[col]
   ...:     column.to_csv(column.name, sep='=')  # writes each column to a file                                                    
   ...:                                          # with filename == column name

In [5]: !cat English  # English file content
1=Hello
2=Hi
3=Bus
于 2013-02-18T08:41:09.227 に答える