Xóa các ký tự số khỏi giá trị chữ và số trong tính toán trường?


9

Tôi có một trường chứa các giá trị chữ và số theo định dạng sau:

A-AA00

Đôi khi họ cũng

A-AAA0

Tôi cần một tập lệnh Python mà tôi có thể đặt vào máy tính trường trong ArcMap 10, ít nhất sẽ loại bỏ các ký tự số và giữ lại các ký tự chữ cái và dấu gạch nối. Vì vậy, ví dụ, điều này:

A-AA0

trở thành thế này:

A-AA

Tôi cũng muốn thay thế các ký tự số bằng các ký tự số từ một trường khác. Mục nhập Stack Exchange này giải quyết vấn đề này, nhưng chuỗi có khoảng trắng trước số và điều này có thể được sử dụng để phân tách và lập chỉ mục ... chuỗi của tôi không được xây dựng một cách khéo léo.

Câu trả lời:


17

Tôi sẽ sử dụng các biểu thức thông thường . Nếu bạn đặt phần sau vào phần khối mã của máy tính, nó sẽ trả về một chuỗi có tất cả các chữ số bị tước, bất kể chúng là gì:

import re
def strip_digits(s):
    return re.sub("\d+", "", s)

Điều này sau đó có thể được gọi từ hộp tính toán như sau:

strip_digits(!column_name!)

Nếu bạn muốn thay thế các ký tự, hãy thêm một đối số khác vào hàm cho các ký tự thay thế và đặt nó vào vị trí của chuỗi trống.


4

chỉ cần sử dụng dải

s="AAAA-000"
print s.strip("0, 1,2,3,etc")
AAAA-

4

Tôi cũng tìm thấy điều này trong trung tâm bản đồ (arcgis.com).
công cụ quản lý văn bản trung tâm tài nguyên

Đó là mã cũ được viết cho 9.2 / 9.3. Không chắc chắn về sự phù hợp cho 10.x Mô tả đọc ...

  1. Tìm hàng loạt và thay thế: Công cụ này tập hợp các chuỗi trong trường văn bản với các chuỗi thay thế được chỉ định trong bảng Tìm / Thay thế. Điều này rất hữu ích để chuẩn hóa các chuỗi nhãn hoặc giới thiệu và thi hành các chữ viết tắt tiêu chuẩn.
  2. Chuyển đổi văn bản thành trường hợp phù hợp: Công cụ này chuyển đổi các chuỗi văn bản trong một trường (được coi là tất cả chữ hoa hoặc chữ thường) thành một trường hợp thích hợp (chữ hoa và chữ thường) trong trường văn bản (mới) khác. Công cụ này được viết để xử lý các chữ viết tắt phổ biến như NE cho phía đông bắc, do đó nó sẽ không xuất hiện dưới dạng Ne.
  3. Trích xuất số Hwy cho nhãn Hwy Shield: Thêm phần số của tên đường cao tốc vào trường văn bản khác.

Tất cả các công cụ này được viết bằng Python và có thể được sửa đổi để thực hiện bất kỳ nhu cầu cụ thể nào bạn có.


3

Tôi sẽ bắt đầu với trường hợp đơn giản này:

>>> x = "A-AA00"
>>> print x
A-AA00
>>> print x.replace("0","")
A-AA
>>> 

Từ đó, một số ví dụ về codeblock cho Python từ Trợ giúp ArcGIS 10 sẽ giúp bạn bắt đầu với giải pháp tổng thể.


1
Tôi nghĩ vấn đề với điều này là không có cách nào dễ dàng để xử lý các chữ số không 0. Đó là lý do tại sao các biểu thức chính quy rất hữu ích, như om_henners đã chỉ ra.
nmpeterson
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.