Python
- pythonのQRコードデコードで文字化け問題 2
前回の質問、「pythonのQRコードデコードで文字化けなくす 」でカタカナ混じりのテキストで文字化けが起きるた場合の回避策として例外処理の方法を教えてもらいその結果をテキストファイルの形で出力するため下記コードにしてみました。 import pyzbar.pyzbar from PIL import Image qr = pyzbar.pyzbar.decode(Image.open('d:/QRcode/qrcode_make.png')) #print(qr) try: with open('d:/QRcode/QRcode.txt', 'w') as f: print(qr[0].data.decode('utf-8').encode('shift-jis').decode('utf-8'), file=f) except UnicodeDecodeError: with open('d:/QRcode/QRcode.txt', 'w') as f: print(qr[0].data.decode('utf-8'), file=f) 前回の「いろはイロハ色波」「さけサケ鮭」のQRコード共に問題なくデコード結果が出力されました。 そこで頭に絵文字を加えた場合や韓国語・アラビア語等コピペしたテキストでQRコードを作りデコードした場合デコード結果が エラー(UnicodeEncodeError: 'cp932' codec can't encode character '\u231a' in position 0: illegal multibyte sequence)のためか出力されません。 因みに import qrcode text = 'text' img = qrcode.make(text) img.save('qrcode_make.png') でQRコードを生成 教えてもらったデコードの例外処理をする下記コードの結果 print(qr) try: print(qr[0].data.decode('utf-8').encode('shift-jis').decode('utf-8')) except UnicodeDecodeError: print(qr[0].data.decode('utf-8')) 元テキスト:⌚さけサケ鮭 デコード結果:⌚さけサケ鮭 元テキスト:안녕 デコード結果:エラー(UnicodeEncodeError: 'shift_jis' codec can't encode character '\uc548' in position 0: illegal multibyte sequence encoding with 'shift-jis' codec failed) 例外処理をしない場合,デコード結果は「안녕」と読み込まれていました。 カタカナひらがな混じりのテキストを使う方に問題があるのかどうか分かりませんがせめて絵文字の場合だけでもテキストファイルへの正しく出力する方法をお教えください。
- pythonでエンコーディング
pythonで以下のようにエンコードするプログラムを開発しています。 保存したモデルをロードした後にfitを行うとエンコードモデルが初期化されている状況です。 動作させるたびに初期化されてしまうと保存している意味がないのではないと考えており、初期化が行われないようにしたいと考えております。 どのように対応すればよいかわかる方がいらっしゃいましたらご教授頂けないでしょうか。 お手数お掛けいたしますがよろしくお願いいたします。 #****************************************************************************** # encodeモデルのロード #****************************************************************************** if os.path.isfile('Hin_encod.sav'): print("encodeモデルロード") # ★encodeモデルが存在する場合はロード o_encoder = job.load('Hin_encod.sav') else: # ★encodeモデルが存在しない場合は新規作成 print("encodeモデル新規作成") # 未知の値が発生した場合は-1に置換 o_encoder = OrdinalEncoder(handle_unknown="use_encoded_value",unknown_value=-1,) # (1)変換対象ラベルの紐づけ o_encoder.fit(df_temp) # (2)変換(エンコーディング) df_temp = o_encoder.transform(df_temp) # エンコード結果の保存 job.dump(o_encoder, filename_HIN_enc)
- pythonのQRコードデコードで文字化けなくす
下記のコードでQRコードの画像ファイルを作り import qrcode text = 'さけサケ鮭' img = qrcode.make(text) img.save('qrcode_make_test1.jpg') 次にこの画像ファイルから下記コードでデコード処理をしたとろ文字化けが発生しました。 import pyzbar.pyzbar from PIL import Image qr = pyzbar.pyzbar.decode(Image.open('qrcode_make_test1.jpg')) print(qr) print(qr[0].data.decode()) デコード結果:縺輔¢繧オ繧ア魄ュ 例えば「いろはイロハ色波」の場合は問題なくデコードされますが「さけサケ鮭」等では文字化けとなります。 この画像をwebの変換サイトで試すと大概の場合問題なくデコードされます。このことは、filemakerでもjsで画像生成しデコードすると生成するJSによって同じ現象が見られ解決方法が見つからなかったのでpythonでどうにかならないかと思い試しているところです。 解決法があればお教えください。
- Excel2021 VBAからPython制御
VBAからPythonでブラウザの制御方法についてアドバイスをお願いします。 xlwings_udfsで以下のPython関数を呼んでブラウザを起動させた後に 更に別のPython関数でそのブラウザに対して実行掛けたいのですが ブラウザが閉じてしまいます。 @xw.func def Init(): #ドライバーインポート from selenium import webdriver from selenium.webdriver.common.by import By #ブラウザー起動 driver = webdriver.Chrome() return 0 ブラウザを閉じずに別のPython関数に継承する方法は、ないのでしょうか? 以下の様な感じです。何らかの方法でdriver変数を継承する必要があるかと思うのですがそれも上手く行きません。 msg2 = xlwings_udfs.Init() msg2 = xlwings_udfs.Proc1() msg2 = xlwings_udfs.Proc2() 色々と調べたのですが見つかりませんでした。 御存じの方が居られましたらアドバイスの程、 宜しくお願い申し上げます。
- Python:空集合の判定 == set():
次のPythonコードはある練習問題の一部です fruitsという集合に対して、入力を1つづつしていくと、集合が空になります その空になったときの変数をprintしたら set() が出ました そこで if fruits == set(): というif文を判定用に入れたら、print("OK")に飛び OK が出ました 質問: 1)集合が空のとき if fruits == set(): で判定する書き方は、正しい(一般的)でしょうか? 2) if fruits == {}: ではジャッジされないのはなぜでしょうか ちなみにAIに1)が判定されてOKが出るのは、空集合は set()だから(そういう仕様だから)との回答が出ましたが、いまいち正しいのかわかりません #code fruits ={1,2,3,4,5,6} for i in range(6): fruit = int(input()) fruits.discard(fruit) # 要素が存在してもいなくても削除 #print(fruits) #最後に set() が主力 if fruits == set(): print('OK') #入力 1 2 3 4 5 6 【回答上のご注意】 回答は、解答(答え)を求めています わたしはプログラマーではありません なので昭和的な「自分で考えろ」的なものは求めていません わからなければ答えない自由があなたにはあります 不明点があれば説明いたします
- 超音波の力で人を洗脳
https://web-mu.jp/column/35406/ ⇧ この記事の超音波で洗脳というものは、意思を洗脳するのですか?それとも体を操るのですか?
- 締切済み
- Python
- jaikonaiuhanai
- 回答数1
- Python embed版でvenvを使いたい
お世話になります。 レジストリ汚すのが嫌でPython3.12.2をembeddable版で導入しました。 最終的にはStable Diffusion AUTOMATICを入れてAI画像を生成するのが目的なわけですが…… 導入時に、Pythonにvenvが入ってないよと怒られます。 Virtual envでは駄目なようです。 Python embeddable版でvenvを入れる方法をご存知の方、どうかご教示のほどよろしくお願いいたします。
- ベストアンサー
- Python
- sasaki1985
- 回答数1
- グーグルコラボラトリーについて。
すみません。グーグルコラボラトリーのパイソンのプログラムを組むところとその結果を見る方法を教えて頂けると幸いです。
- python: 変数規則 PEP8
python コードに変数として hold_u というのを用いたところ、AIのGeminiとClaud 3の両方にPEP8に則していないといわれました hold_unit はよいそうです hold_u, hold_p, hold_a などどれも怒られるのですが、規約のどの部分に抵触しているのかわかりません これはキャメルではないことはわかります hold_uはスネークにならないのでしょうか?
- Python: matrix追加でNoneの理由
下記の#入力とPython #コード の実行で、「出力結果」が出ます #▼Aのところで、 matrix.append(d) を可視化しようとしたら None しか返りません 想像では入力の2行目以降が順次追加されていくイメージを想像していました [[11, 14, 16, 9]] [[11, 14, 16, 9], [11, 14, 16, 9]] : 質問: 1)この#▼Aの下の行でNoneしか返らない理由をおしえてください 2)matrixに追加されて形成される行列は、単純にメモリ上で形成されていると考えていいですか? #入力 3 11 14 16 9 13 15 19 10 10 11 14 11 #コード N = int(input()) # 空のリストを作成 matrix = [] for i in range(N): # 入力を受け取り、リストに変換 d = list(map(int, input().split())) # リストをmatrixに追加 matrix.append(d) #▼Aここでmatrixを可視化しようとした print(matrix.append(d)) print(app) #▼Bここでもmatrixを可視化しようとした print(matrix) # 1行目の要素0 first_element = matrix[0][0] print(first_element) #11 #==出力結果================== None None None None None None [[11, 14, 16, 9], [11, 14, 16, 9], [13, 15, 19, 10], [13, 15, 19, 10], [10, 11, 14, 11], [10, 11, 14, 11]] 11
- pythonでの実行エラーを解消したい
windows10です。 pythonの超初心者です。 添付資料のようにコードを作成し、実行させると python:can't open file 'C:¥¥Users¥¥知之¥¥Greeting.py': [Errno 2] No such file or directory と、エラーメッセージが出ます。 エラーの解消方法を教えてください。 宜しくお願いいたします。
- Pythonコードの間違いを指摘して
import tkinter as tk i=0 def a(): global i i=1 root=tk.TK() root.geometry("100x100") a() label=tk.Label(root,text=i) label.grid() tk.mainloop() →できた import tkinter as tk i=0 def a(): global i i=1 root=tk.TK() root.geometry("100x100") label=tk.Label(root,text=i) label.grid() button=tk.Button(root,text="button",command=a) button.grid() tk.mainloop() →できない(0と表示される)
- 締切済み
- Python
- NKM_Chitose
- 回答数2
- Pythonコードの間違いを指摘して
import tkinter as tk lastplay="" def gamestart(): global lastplay lastplay="試合開始" frame_main.tkraise() root=tk.Tk() frame_settings=tk.Frame(root) frame_settings.grid() button_gamestart=tk.Button(frame_settings,command=gamestart) button_gamestart.grid() fraim_main=tk.Frame(root) fraim_main.grid() label_1=tk.Label(frame_main,text=f"{lastplay}です") label_1.grid() fraim_settings.tkraise() root.mainloop() エラー内容 frame_mainが表示されたとき、変数の「試合開始」が表示されず、「です」のみ表示される。
- 締切済み
- Python
- NKM_Chitose
- 回答数1
- Python inputについて
次の条件の時、inputで取得する方法を教えてください。(リストに格納する) a b (2つ) ←これはinput().split()? a b c ... (複数) a,b,c,...(コンマで区切る) a b c ... (複数行) a b c ... d e f ... g h i ... ... (複数の複数行) また、a b c (入力が3つと決まっている時) a b c ... (入力が3つ以上の時) の2つの構文はどのように違いますか? いろいろありますが、わかる方は教えてください!
- Pythonについて
Pythonで〇〇から〇〇の時に実行、 ということはできますか? if文を使うと if a <= 100: このように100以下のみ実行となりますが、 if a <= 100: if a >= 90: print("〇") else: print("×") else: print("×") aが90以上100以下の時、「◯」、それ以外の時「×」を出力するには上のような構文にすればいいですか? この構文より簡単な構文、もしくはより良い構文がある場合は教えてください。
- Pythonコードを教えて
以下のコードを教えてください。 前提:PandasをつかってCSVファイルを読み込んである。RouteListという配列に格納してある。「路線番号」と「色」の2つのカラムがある。 実行したい操作:RouteListの「色」のカラムだけを抜き出して配列Colorsに格納する。
- 締切済み
- Python
- NKM_Chitose
- 回答数1
- python:関数が複数globalを読むロジック
pythonの次のコードがあります #------------------------------------ #code default_name = "Ichiro" def kyodai1(name=default_name): return f"Hello {name}," def kyodai2(name=None): if name is None: name = default_name return f"Hello {name}." default_name = "Jiro" print(kyodai1(), kyodai2()) # 出力 # Hello Ichiro, Hello Jiro. #----------------------------------- kyodai2()関数では、 name = default_name とあり、default_nameは最初の行の"Ichiro"を呼ぶかと思ったら、関数の下にある"Jiro"を読みに行っています default_nameはglobal変数として default_name = "Ichiro" があるのに、def kyodai2()関数だけ default_name = "Jiro" を読みに行った理由がわからずにいます このロジックを3つのAIにコードを読ませて説明させたところ、うち1つが 「(kyodai2スコープ内で)default_nameが定義されていません。この場合、default_name = "Ichiro"ではなく、default_name = "Jiro"を参照します」 と答えました 質問: この説明が正しいかどうかもわからないのですが、なぜkyodai2()関数は、最初のIchiroではなくJiroを読みにいくのでしょうか? Tutolialで該当箇所がわからずにいます 【回答上のご注意】 回答は、解答(答え)を求めています わたしはプログラマーではないので、昭和的な「自分で考えろ」的なものは求めていません わからなければ答えない自由もあなたにはあります 不明点があれば説明いたします
- Pythonについて
Pythonはスマホのメモ帳などでもできるの ですか? htmlやcssは、メモ帳(テキストファイル)を ファイルに保存して拡張子を.htmlにすれば 機能するのですが、Pythonではできるの でしょうか? また、変数など、どのようにしてPythonと htmlを連携?すれば良いのでしょうか?
- Scikit-learnを利用してデータの分類
Scikit-learnを利用してデータの分類を行いたいと考えております。 ★検証したいこと マスタデータの名称、大分類CDを元に小分類CDを予測する 現状で実現できたこと ・学習モデルを生成(MLPClassifier)/保存 ・分類対象データを訓練データ/テストデータに分割 ・fitを利用して学習 ・predictを利用してテストデータの予測 ※精度は65%程度 実現できないこと ・ロードした学習モデルを呼び出して新たな分類対象データを もとにpredictを行うと予測結果の精度が低い(1件も正しい予測がされない) 基本的な知識が欠落していることも想定され、大変恐縮ですが、ご存じの方がいらっしゃればご教授頂けますと幸いです。 yosoku.py ========================================== import os import sys # パラメータ渡しに必要 # [Scikit-learn] [サイキットラーン]機械学習ライブラリ from sklearn import datasets # サンプルのデータ from sklearn.neural_network import MLPClassifier # [ニューラルネットワーク]アルゴリズム from sklearn.model_selection import train_test_split # 訓練データ】と【テストデータ】を簡単に分けることができるライブラリ import sklearn as skl # [サイキットリーン]機械学習用ライブラリ import numpy as np # [ナンパイ]数値計算用ライブラリ import pandas as pd # [パンダス]データ解析ライブラリ import matplotlib.pyplot as plt # [マットプロットリブ]画像描画用のライブラリ import joblib as job # 学習モデルの保存/ロード #from sklearn.externals import joblib # 学習モデルの保存/ロード from datetime import datetime debug = "1" # DEBUGモード 0:ログ出力なし 1:ログ出力あり Dip_Glaf = "1" # グラフモード 0:なし 1:表示あり if debug == "1": print('*****************商品分類 予測 開始*****************') ret = "0" # 戻り値 try: filename = 'Hin_Bunrui_model_' filename = filename + datetime.now().strftime('%Y%m%d') + 'sav' df = pd.read_csv('test_BUNRUI_20620_2_kensyou.csv', encoding='shift_jis') # 品名を10新数に変換する事である程度法則性を持った値となるため品名も機械学習に有益となる print('*******品名10新数変換*********') for index, row in df.iterrows(): str_wk = row['HIN_NAME'] # DataFrameの品名を変数にセット str_wk2 = str_wk.encode('utf-8', 'replace').hex() # 品名を16新数に変換 [0x99のような形式] df.at[index, 'HIN_NAME'] = int(str_wk2,16) # 16新数の品名を10新数に変換しdataFrameを更新 #------------------------------------------------------------------------------ # 文字列カテゴリーを数値化する #------------------------------------------------------------------------------ #print('[HIN_NAME_SUB]の数値化') data = pd.factorize(df.iloc[: , 3]) df["HIN_NAME_SUB"] = data[0] # 0列目に変換後の値 1列目に変換前の値 #print('[HIN_NAME_SUB2]の数値化') data = pd.factorize(df.iloc[: , 4]) df["HIN_NAME_SUB2"] = data[0] # 0列目に変換後の値 1列目に変換前の値 print('[BUNRUI_SYO_NM]の数値化') data = pd.factorize(df.iloc[: , -1]) df["BUNRUI_SYO_NM"] = data[0] # 0列目に変換後の値 1列目に変換前の値 skl_Data = skl.utils.Bunch() # [target]目的変数[正解ラベル]にCSVデータの[Bunrui](分類CD)をセット skl_Data['target'] = df['BUNRUI_SYO'] print("***** 正解ラベル セット完了 [BUNRUI_SYO][小分類CD] *****") skl_Data['data'] = df.loc[:, ['HIN_NAME_SUB','HIN_NAME_SUB2', 'HIN_KBN', 'BUNRUI_DAI', 'BUNRUI_CHU' ]] skl_Data['feature_names'] = [ 'HIN_NAME_SUB','HIN_NAME_SUB2', 'HIN_KBN', 'BUNRUI_DAI', 'BUNRUI_CHU' ] if os.path.isfile(filename): print("ロード") # ★機械学習モデルが存在する場合はロード clf = job.load(filename) else: # ★機械学習モデルが存在しない場合は新規作成 print("新規作成") clf = MLPClassifier(hidden_layer_sizes=10, activation='relu',solver='adam', max_iter=500) print("予測 ") # 戻り値で予測結果を戻す [skl_Data['target'] = df['Bunrui']]なので分類CDが戻る print(clf.predict(skl_Data['data'])) # 戻り値で予測結果を戻す [skl_Data['target'] = df['Bunrui']]なので分類CDが戻る print("正解 ") print(df["BUNRUI_SYO"]) except Exception as E: sys.exit() # 処理終了 # 戻り値格納(正常終了) print("Result {0}".format(ret))
- python: nonlocalとglobal文
pythonで次のような関数の書き方がチュートリアル本に書かれていました ------------------------------------------- スコープと名前空間の例 def scope(): loc = "abc" def do_local(): loc = "local" def do_nonlocal(): nonlocal loc loc = "nonlocal" def do_global(): global loc loc = "global" ------------------------------------------- VS Codeでブレークポイントを置き走らせ、 nonlocal loc → loc = "nonlocal" global loc →loc = "global" の代入(バインディング?)が起こることはわかりました チュートリアル本では、nonlocalとglobalは次のように書かれています 説明文 nonlocal文 その変数が自分を取り囲むスコープにある global文 その変数がグローバルスコープにある 質問; 上の2行(説明文)の 1)nonlocal文 その変数が自分を取り囲むスコープにある 2)global文 その変数がグローバルスコープにある これらのスコープが何、どこ、どのように、指しているか教えてください また 3)これらと名前空間の関係をわかりやすく教えてください (本ではわからず) 【回答上のご注意】 回答は、解答(答え)を求めています わたしはプログラマーではないので、昭和的な「自分で考えろ」的なものは求めていません わからなければ答えない自由もあなたにはあります 不明点があれば説明いたします