[解決済み] PythonでExcelファイルを読み込む際、列名を指定して特定の列の値を取得するにはどうすればよいですか?
2023-03-04 21:37:30
質問
エクセルファイルがあります。
Arm_id DSPName DSPCode HubCode PinCode PPTL
1 JaVAS 01 AGR 282001 1,2
2 JaVAS 01 AGR 282002 3,4
3 JaVAS 01 AGR 282003 5,6
文字列をフォームに保存したい
Arm_id,DSPCode,Pincode
. この形式は設定可能で、例えば、以下のように変更することができます。
DSPCode,Arm_id,Pincode
. のようなリストで保存しています。
FORMAT = ['Arm_id', 'DSPName', 'Pincode']
指定された名前のカラムの内容を読み取るにはどうしたらよいでしょうか。
FORMAT
は設定可能ですか?
これは私が試したものです。現在、私はファイル内のすべてのコンテンツを読み取ることができます
from xlrd import open_workbook
wb = open_workbook('sample.xls')
for s in wb.sheets():
#print 'Sheet:',s.name
values = []
for row in range(s.nrows):
col_value = []
for col in range(s.ncols):
value = (s.cell(row,col).value)
try : value = str(int(value))
except : pass
col_value.append(value)
values.append(col_value)
print values
私の出力は:
[
[u'Arm_id', u'DSPName', u'DSPCode', u'HubCode', u'PinCode', u'PPTL'],
['1', u'JaVAS', '1', u'AGR', '282001', u'1,2'],
['2', u'JaVAS', '1', u'AGR', '282002', u'3,4'],
['3', u'JaVAS', '1', u'AGR', '282003', u'5,6']
]
そして、ループして
values[0]
を見つけようとします。
FORMAT
の内容を
values[0]
のインデックスを取得し
Arm_id, DSPname and Pincode
のインデックスを
values[0]
のインデックスを知り、次のループからすべての
FORMAT
のインデックスがわかるので、どの値を取得する必要があるかがわかります。
しかし、これはあまり良い解決策ではありません。
どのように私はExcelファイルで名前を持つ特定の列の値を取得するのですか?
どのように解決するには?
これは一つの方法です。
from xlrd import open_workbook
class Arm(object):
def __init__(self, id, dsp_name, dsp_code, hub_code, pin_code, pptl):
self.id = id
self.dsp_name = dsp_name
self.dsp_code = dsp_code
self.hub_code = hub_code
self.pin_code = pin_code
self.pptl = pptl
def __str__(self):
return("Arm object:\n"
" Arm_id = {0}\n"
" DSPName = {1}\n"
" DSPCode = {2}\n"
" HubCode = {3}\n"
" PinCode = {4} \n"
" PPTL = {5}"
.format(self.id, self.dsp_name, self.dsp_code,
self.hub_code, self.pin_code, self.pptl))
wb = open_workbook('sample.xls')
for sheet in wb.sheets():
number_of_rows = sheet.nrows
number_of_columns = sheet.ncols
items = []
rows = []
for row in range(1, number_of_rows):
values = []
for col in range(number_of_columns):
value = (sheet.cell(row,col).value)
try:
value = str(int(value))
except ValueError:
pass
finally:
values.append(value)
item = Arm(*values)
items.append(item)
for item in items:
print item
print("Accessing one single value (eg. DSPName): {0}".format(item.dsp_name))
print
カスタムクラスを使用する必要はなく、単純に
dict()
. しかし、クラスを使用する場合、上で見たようにドットノテーションですべての値にアクセスすることができます。
上のスクリプトの出力は以下のとおりです。
Arm object:
Arm_id = 1
DSPName = JaVAS
DSPCode = 1
HubCode = AGR
PinCode = 282001
PPTL = 1
Accessing one single value (eg. DSPName): JaVAS
Arm object:
Arm_id = 2
DSPName = JaVAS
DSPCode = 1
HubCode = AGR
PinCode = 282002
PPTL = 3
Accessing one single value (eg. DSPName): JaVAS
Arm object:
Arm_id = 3
DSPName = JaVAS
DSPCode = 1
HubCode = AGR
PinCode = 282003
PPTL = 5
Accessing one single value (eg. DSPName): JaVAS
関連
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] ローカルディレクトリからrequirements.txtファイルに従ってpipを使用してパッケージをインストールするにはどうすればよいですか?
-
[解決済み] Pythonでパスから拡張子なしでファイル名を取得する方法は?
-
[解決済み] Pythonで大きなファイルの行数を安価に取得する方法は?
-
[解決済み] Pythonでファイルの絶対パスを取得する方法
-
[解決済み] Pythonを使ってシステムのホスト名を取得するにはどうすればよいですか?
-
[解決済み] PandasとPythonでCSVファイルを読み込むとUnicodeDecodeErrorが発生する。
-
[解決済み] [Solved] .whlファイル付きのPythonパッケージをインストールする方法は?
-
[解決済み】Pythonで2つの変数の論理xorを取得するにはどうすればいいですか?
-
[解決済み] Pythonの検索パスを他のソースに展開する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Python 文字列から最後の文字を削除し、それを返す
-
[解決済み] Pythonで文字列を別の文字列に追加するにはどうすればよいですか?
-
[解決済み] Pythonでリストをタプルに変換する
-
[解決済み】文字列を一定の長さまで繰り返す
-
[解決済み] Jupyterノートブックでenv変数を設定する方法
-
[解決済み] Flaskで1時間ごとに関数を実行するようにスケジュールするには?
-
[解決済み] 文字列から先頭と末尾のスペースを削除するには?
-
[解決済み] CSVデータを処理する際、1行目のデータを無視する方法を教えてください。
-
[解決済み] djangoフレームワークでフォームフィールドから値を取得するには?
-
[解決済み] Pythonの文字列の前にあるbという接頭辞は何を意味するのですか?