もくじ
↓こちらのつづきとして解説します。
split
関数を使う
一例としてこのデータで確認してみます。
row[6] | row[7] | row[8] |
---|---|---|
大阪府 | 堺市西区 | 神野町 |
大阪府 | 堺市西区 | 小代(292-1番地) |
before
# 市区町村 if row[8] == "以下に掲載がない場合" : address["city"] = row[7] else: address["city"] = row[7] + row[8]
{ "5938308": { "pref": "大阪府", "city": "堺市西区神野町" }, "5938313": { "pref": "大阪府", "city": "堺市西区小代(292-1番地)" } }
after
if row[8] == "以下に掲載がない場合" : address["city"] = row[7] else: if "(" in row[8]: // 追加 row[8] = row[8].split('(')[0] // 追加 address["city"] = row[7] + row[8]
(
以降を削除した文字列を再びrow[8]
に代入します。そうすることで削除された文字列をrow[8]
として使えるようにしています。
if
で(
の有無を確認しているので、もし(
がなければ削除される部分はありません。
{ "5938308": { "pref": "大阪府", "city": "堺市西区神野町" }, "5938313": { "pref": "大阪府", "city": "堺市西区小代" } }
全体像
import csv import json csv_file = open("./KEN_ALL.CSV", "r", encoding="ms932", errors="", newline="" ) reader = csv.reader(csv_file, delimiter=",", doublequote=True, lineterminator="\r\n", quotechar='"', skipinitialspace=True) code = {} for row in reader: address = {} # 郵便番号 zipcode = row[2] # 都道府県 address["pref"] = row[6] # 市区町村 if row[8] == "以下に掲載がない場合" : address["city"] = row[7] else: if "(" in row[8]: // 追加 row[8] = row[8].split('(')[0] // 追加 address["city"] = row[7] + row[8] code[zipcode] = address with open('./zipcode.json', 'w') as f: json.dump(code, f, ensure_ascii=False, indent=4)