Saya harus melakukan memijat data paket kami untuk membuatnya dapat digunakan oleh sebuah program di helikopter sheriff. Program ini membutuhkan salah satu format alamat berikut dalam bidang:
Alamat kami saat ini dalam satu bidang: mis: 1234 W Main St.
Apakah ada cara untuk mengotomatiskan pemisahan bidang ke dalam salah satu format yang diinginkan ini?
Saya dapat membayangkan dua format bidang akan lebih mudah dengan hanya memanggil split setelah angka, tetapi juga dapat menyebabkan masalah untuk jalan-jalan seperti 1st Ave, dll.
Jawaban:
Alih-alih menggunakan beberapa RegExes untuk mem-parsing alamat, cukup gunakan Esri's out of the box tool yang dirancang untuk tugas ini, Standarisasi Alamat . Ini tersedia di semua level lisensi dan pengalaman saya positif.
sumber
Anda dapat mencapai ini dalam kalkulator lapangan menggunakan python. Ini mungkin bukan yang paling elegan tetapi ini adalah permulaan, dengan asumsi kasus paling sederhana (mis. Alamat Anda semua terlihat sama). Pertama saya akan membuat kolom tambahan yang dibutuhkan. Dengan asumsi kolom Anda dengan alamat lengkap disebut "Alamat".
Untuk HOUSENO di bidang kalkulator, tulis:
Ini kemudian dapat dipanggil dari kotak hitung sebagai:
Untuk nama jalan Anda:
Codeblock:
Untuk arahan dengan asumsi itu adalah karakter pertama setiap kali:
Codeblock:
Berikut adalah sumber daya python untuk kembali . Ini 7.1 Studi Kasus: Alamat Jalan telah membantu saya berkali-kali dengan memilah saya basis data jalan / alamat juga menggunakan python dan re modul. Ini akan membantu Anda, dari sini jika Anda tidak mendapatkan hasil yang Anda inginkan komentar dan saya dapat mengubah kode saya
sumber
Seperti kata Erica, format kedua Anda mudah. Jika semua nama jalan Anda adalah satu kata, Anda bisa memeriksa panjang daftar setelah memecah bidang asli. Panjang 3 = tanpa awalan, panjang 4 = memiliki awalan (juga mengasumsikan SUFTYPE selalu diisi). Ini gagal ketika jalan lebih dari satu kata, seperti 'Sungai Besar'. Anda bisa memeriksa apakah elemen kedua cocok dengan daftar awalan yang diizinkan, dan melanjutkan dari sana. Anda harus menguji ini untuk melihat apakah itu berfungsi dengan data Anda.
sumber
Pastikan input Anda dalam format string dan cukup gunakan fungsi string.split () yang akan terpecah pada spasi putih dan mengembalikan daftar. (mis. "1234 W Main St." akan kembali ["1234", "W", "Main", "St."])
Dari sana saya akan menggunakan beberapa pernyataan bersyarat untuk memeriksa data Anda tergantung pada seberapa konsisten input Anda. Jika satu-satunya ketidakkonsistenan dalam data Anda adalah bahwa terkadang ada predir dan waktu lainnya tidak ada, cukup lakukan pemeriksaan pada daftar yang dikembalikan untuk melihat apakah memiliki panjang 3 atau 4 (atau> 4 jika jalan Anda nama memiliki spasi di dalamnya).
if len (splitList) == 4:
elif len (splitList) == 3:
sumber