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

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

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

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Python

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

Q&A

解決済

1回答

406閲覧

Counterで拾ってきたcount型を数字型にタイプ変換がしたいです。

ken248

総合スコア24

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Python

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

0グッド

0クリップ

投稿2020/12/03 02:18

編集2020/12/03 02:33

コードの部分で太文字になっているelif文のところで解決策が見いだせなくなっています。

row[5]の種類が2以上だったら
”○と○のタグが混在しています。”と表示するのが目的です。
○に入るパターンは#row[5]からひっぱってきたものです。
ただ、そのまま引数に与えることはできず…
ご教示をお願いいたします。

python

1import glob 2import os 3import tkinter as tk 4import datetime 5import subprocess 6import csv 7import math 8import shutil 9from tkinter import messagebox as mb 10from tkinter import filedialog 11import sys 12import collections 13import pandas as pd 14 15入力されたフォルダパスの取得 16def tag_check(): 17 fld1 = e1.get() #画像フォルダ 18 fld2 = e2.get() #csvファイル 19 20fld1内の画像枚数の確認 21 img_count=(len(os.listdir(fld1))-1) 22 print(img_count) 23 24fld2内のタグ個数の確認 25タグをすべて抽出させる→タグの個数をカウント 26 with open(fld2,encoding="utf-8") as f: 27 an_tag_list = [] 28 for row in csv.reader(f): 29 an_tag_list.append(row[5]) 30 31 del an_tag_list[0]#indexを削除 32 c=collections.Counter(an_tag_list) 33 print(c)#Counter({'RtoL': 736, 'RroL': 2}) 34 print(len(an_tag_list))#738 35 an_tag_count = len(an_tag_list) 36 count=int(c) 37 print(count) 38 39画像枚数とタグ個数が同数かチェック 40 if img_count == an_tag_count: 41 mb.showinfo('OK','正しくタグ付けできています') 42 pass 43 44#row[5]の種類が2以上だったら 45 elif img_count == an_tag_count: 46 mb.showwarning('警告',c+'\nタグが混在しています') 47 48 49 50 elif img_count != an_tag_count: 51 mb.showerror('警告','画像枚数とタグ個数があっていません') 52 53 54 55フォルダを開く処理 56def open_folder(num): 57 typ = [('CSVファイル','*.csv')] 58 if num == 1: 59 orgin_path = e1.get() 60 if orgin_path is None: 61 folder_path = 'C:' 62 else: 63 folder_path = orgin_path 64 65 folder_path = tk.filedialog.askdirectory(initialdir = folder_path) 66 e1.insert(tk.END,folder_path) 67 elif num == 2: 68 folder_path = e1.get() 69 file_path = tk.filedialog.askopenfilename(filetypes = typ,initialdir = folder_path) 70 e2.insert(tk.END,file_path) 71

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

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

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

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

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

ppaul

2020/12/03 02:22

codeの最後の```が消えているので正しく表示されていません。
ken248

2020/12/03 02:33

修正しました。ご指摘ありがとうございます。
y_waiwai

2020/12/03 02:47

提示のコードでどういう不具合があって、それをどうしたいという話でしょうか。 また、エラーが出るならエラーメッセージを提示しましょう
guest

回答1

0

ベストアンサー

中身は理解していませんが、an_tag_listに入っているものが全部同じかどうかを知りたいのであれば、以下です。

python

1#row[5]の種類が2以上だったら 2 elif len(set(an_tag_list)) >1: 3 mb.showwarning('警告',c+'\nタグが混在しています')

投稿2020/12/03 02:46

編集2020/12/03 02:47
ppaul

総合スコア24666

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

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

ken248

2020/12/03 03:00

できました!ありがとうございます。 ちなみに mb.showwarningにタグの名前も出せたら出したいのですが… もし質問が伝わるようでしたらご教示お願いいたします。 (タグの名前は for row in csv.reader(f): an_tag_list.append(row[5])で引っ張ってくるのですが、 これだけだと全部表示してしまうので、各要素のみ表示したいです。)
ppaul

2020/12/03 03:10

mb.showwarning('警告',c+'\nタグが混在しています'+str(set(an_tag_list))) とかていいですか。
ken248

2020/12/03 04:08

できました。 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問