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

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

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

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

638閲覧

Excel Python 特定の正規表現を抽出、集計

dhalsim0729

総合スコア10

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/01/28 07:08

前提・実現したいこと

例えばExcelA列に以下のような値が入っていたとして
A列
1 sadfal=PO009_POP,PO006_KKS
2 safhaieu=PO007_SSD,PO012_MMU
3 fasjrfa=PO007_ABC

PO○○○(〇は数字)がそれぞれ何個あるのか以下のように集計したものを
Excel別シートに入力したいです
A列  B列
PO007 2回
PO009 1回
PO006 1回
PO012 1回

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

ソースコード

試したこと

import openpyxl,pprint,collections
wb = openpyxl.load_workbook( r"Excel名")
type(wb)
sheet = wb.get_sheet_by_name('Sheet1')
for i in range(2,100):
print(sheet.cell(row=i, column=1).value)
collections.Counter(re.findall(r'PO\d{3}',sheet.cell(row=i, column=1).value ))
色々試してはいるのですが、こんな感じで詰まっています

補足情報(FW/ツールのバージョンなど)

Jupiterを使っています
ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

質問が漠然としているのでアドバイスまで。

やりたいことのおおまかな流れは以下のようになるかと思います。

Python

1# A列のすべての行のセル値についてループ 2 # 1.セル値の文字列から、"P0{3桁の数字}"部分を(複数あれば複数)抜き出す。 3 # 2.抜き出した部分を抽出リストに追加する 4 5# 抽出リストから出現カウンターを作成する(collections.Counterを利用) 6 7# 出現カウンターの各要素についてループ 8 # 3.A列に要素のキー="P0{3桁の数字}"を書き出す 9 # 4.B列に要素の値=出現カウンター値を書き出す。 10 # 5.書き出し先の位置を次の行へ移動

上記のように、必要と思われる処理を箇条書きにすると考えがまとまって実装しやすくなります。
各処理を、ひとつずつどのようなコードを書くべきか考えてみてください。
その結果、どこがどのように分からないかが具体的に見えてくるかと思います。

投稿2020/01/28 07:56

can110

総合スコア38266

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問