【Python】特定の文字以降を削除する

もくじ

↓こちらのつづきとして解説します。

bonoponz.hatenablog.com

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)

参考URL

Pythonで特定の文字以降を削除する:Python