質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
openpyxl

openpyxlは、Excel2007以降のファイル(xlsx/xlsm/xltx/xltm)を読み書きするためのPythonライブラリです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

430閲覧

Excelファイルに入力した番号と対応した名前を出力させたい

rikkkk

総合スコア8

openpyxl

openpyxlは、Excel2007以降のファイル(xlsx/xlsm/xltx/xltm)を読み書きするためのPythonライブラリです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2020/10/26 05:10

イメージ説明

Python3

1name_list = [] 2wb = openpyxl.load_workbook("C:\user\name.xlsx") 3ws = wb["名前"] 4for row in ws.iter_rows(min_row=2): 5 values = [] 6 for col in row: 7 values.append(col.value) 8 name_list.append(tuple(values))

openpyxlを使って上記のexcelファイルを取り込んだ。

Python3

1segments = [1,2,3,6]

そして上記のようなリストを作成したあとに、segmentsに入れた番号順で名前を表示させ、もし入力した番号に対応する名前がなかったらそのまま番号を出力させるようにしたいのですが、うまくできませんでした。

目的の出力
['佐藤','高橋','田中','6']


試したこと

Python3

1masters = [] 2for s in segments: 3 if s != name_list[0]: 4 masters.append(s) 5 for d in name_list: 6 if s == d[0]: 7 masters.append(d[1])

上記のプログラムを書いたが['1','佐藤','2','高橋','3','田中','6']となってしまいどのようにすればいいかわかりませんでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

name_listがリストだと処理が大変なので、辞書型(name_dict)にしました。
あと、xlsx読み込み時にfor row in ws.iter_rows(min_row=2):となっていて、1行目が読まれていなかったので勝手にmin_row=1としています。必要なら戻してください。

python3

1import openpyxl 2 3name_dict = {} 4wb = openpyxl.load_workbook("C:\user\name.xlsx") 5ws = wb["Sheet1"] 6for row in ws.iter_rows(min_row=1): 7 values = [] 8 for col in row: 9 values.append(col.value) 10 name_dict[values[0]] = values[1] 11print(name_dict) 12# {1: '佐藤', 2: '高橋', 3: '田中', 4: '鈴木', 5: '山田'} 13 14masters = [] 15segments = [1,2,3,6] 16for s in segments: 17 if s in name_dict: 18 masters.append(name_dict[s]) 19 else: 20 masters.append(s) 21print(masters) 22# ['佐藤', '高橋', '田中', 6]

投稿2020/10/28 06:25

jeanbiego

総合スコア3966

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問