GUIDES

CSV の住所を整える

住所の列を持つ CSV を読み、1件ずつ検証して、検証レベル・正規化した住所・座標の列を足して書き出す手順です。

更新: 2026年10月12日

顧客名簿や配送先リストの住所を、検証して整える手順です。件数が多いときは、バッチ処理(Growth 以上)を使います。ここでは、全プランで使える 1件ずつの方法を示します。

方針

  1. 元の CSV は、そのまま残す。結果は別の列(または別のファイル)に足す。
  2. 住所の列を parse に渡し、level と正規化した住所を受け取る。
  3. level で三つに分ける:そのまま使う・目視する・再入力を求める。

コード(Python)

import csv, os, time, requests

KEY = os.environ["KITEN_API_KEY"]
URL = "https://api.zorynto.com/v1/parse"   # TODO(要確認): API ホスト
H = {"Authorization": f"Bearer {KEY}", "Content-Type": "application/json"}

def parse(text):
    for wait in (0, 1, 2, 4):
        time.sleep(wait)
        r = requests.post(URL, headers=H, json={"text": text}, timeout=10)
        if r.status_code != 429:
            r.raise_for_status()
            return r.json()
    raise RuntimeError("429 が続きました")

with open("customers.csv", newline="", encoding="utf-8") as f, \
     open("customers.checked.csv", "w", newline="", encoding="utf-8") as g:
    rows = csv.DictReader(f)
    out = csv.DictWriter(g, fieldnames=rows.fieldnames + ["level", "precision", "request_id"])
    out.writeheader()
    for row in rows:
        res = parse(row["address"])
        row["level"] = res["level"]
        row["precision"] = res["location"]["precision"]
        row["request_id"] = res["request_id"]
        out.writerow(row)

要確認 本文の項目名(text)と、応答の項目名は、公開前に確定します。

結果の分け方

検証レベル扱い
L5 L4そのまま使う
L3 L2目視する(corrections と warnings を見る)
L1再入力を求める、または対象から外す

気をつけること

  • 住所の列に、氏名や電話番号が混ざっていると、解析が乱れます。住所だけを渡してください。
  • 1コールは住所1件です。CSV の行数が、そのまま利用量になります。月間の上限を確認してから実行してください(プランと上限)。
  • 429 は、秒間の上限です。間隔をあけて再試行します(再試行と429)。
  • Kiten は住所のテキストを保存しません。結果の CSV は、お客さまの側で管理します。

関連:検証レベル・POST /v1/parse

この内容に誤りや不足があれば、お知らせください。