前提・実現したいこと
プログラミング初心者です。以下のサイトのexcelをopenpyxlを使ってjson形式に改変するプログラムを作っています。
http://www.soumu.go.jp/main_sosiki/joho_tsusin/top/tel_number/number_shitei.html#kotei-denwa- リスト
しかし、この9つのファイルの中の「5,8から始まる市外局番」のexcelだけはこのプログラムで改変しようとするとエラーが発生してしまいます。
現在はエラーの通りに変数を定義(#Converting内の while文の前に「data_j = str("")」を追加)することでエラーを解消できたのですが、なぜこれらの2つのファイルだけエラーが出てくるのかが未だに分かりません。教えていただけませんでしょうか。
発生している問題・エラーメッセージ
Traceback (most recent call last): File "D:/ndis-scraping/convert.py", line 64, in <module> data_j_all = data_j_all + str(data_j) NameError: name 'data_j' is not defined
該当のソースコード
Python3
1import pathlib as pl 2import openpyxl as px 3import json as js 4 5# Initial Setting 6path = pl.Path(__file__).resolve().parent 7 8# Preparing "xlsx" 9message_1 = "○ Please enter a file name of the \"xlsx\" fomat." + " (Path: " + str(path) + '/excel/' + ")" 10print(message_1) 11xl_name = input() 12xl_path = str(path) + '/excel/' + xl_name + '.xlsx' 13 14 15# Checking "xlsx" 16xl_check = pl.Path(xl_path).exists() 17while False == xl_check: 18 print(message_1) 19 xl_name = input() 20 xl_path = str(path) + '/excel/' + xl_name + '.xlsx' 21 xl_check = pl.Path(xl_path).exists() 22 23# Opening "xlsx" 24xl_wb = px.load_workbook(xl_path) 25xl_ws = xl_wb.sheetnames 26message_2 = "○ Please select a worksheet. (With numbers from left to right) ... " + str(xl_ws) 27print(message_2) 28xl_sn_in = int(input()) 29 30# Checking "xl_sn_in" 31xl_sn_max = int(len(xl_ws)) 32while xl_sn_max < xl_sn_in or xl_sn_in < 1: 33 print(message_2) 34 xl_sn_in = int(input()) 35 xl_sn_max = int(len(xl_ws)) 36 37# Selecting 38xl_sn = xl_sn_in - 1 39xl_st = xl_ws[xl_sn] 40xl_sld = xl_wb[xl_st] 41 42# Converting (Changeavle) 43print("Now converting...") 44start = 3 45data_j_all = "[\n" 46while 6000 >= start: 47 data_G = xl_sld["G" + str(start)].value 48 data_G2 = xl_sld["G" + str(start + 1)].value 49 if None == data_G: 50 break 51 if "使用不可" == data_G or "使用予定" == data_G or "使用中" == data_G: 52 data_B = xl_sld["B" + str(start)].value 53 data_C = xl_sld["C" + str(start)].value 54 data_D = xl_sld["D" + str(start)].value 55 data_E = xl_sld["E" + str(start)].value 56 data_j_l = "\"Location\": \"" + data_B + "\"" 57 data_j_tna = "\"TNall\": \"" + data_C + "\"" 58 data_j_tno = "\"TNout\": \"" + data_D + "\"" 59 data_j_tni = "\"TNins\": \"" + data_E + "\"" 60 data_j = "\t{" + data_j_tna + ", " + data_j_tno + ", " + data_j_tni + ", " + data_j_l + "},\n" 61 if None == data_G2: 62 data_j = data_j[:-2] + "\n]" 63 data_j_all = data_j_all + data_j 64 start = start +1 65 66# Outputting to file 67file_path = str(path) + '/data/' + xl_name + '.json' 68file_j = open(file_path, mode = 'w', encoding = 'utf-8') 69file_j.write(data_j_all) 70file_j.close()
試したこと
エラー通りに書かれた通りに、64行目よりも前(#Converting の while文の前に「data_j = str("")」を追加)したところ、エラーはなくなりました。
補足情報(FW/ツールのバージョンなど)
Windows10(1803), Python3.7.3(32bit)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。