ArcGIS Alan Hesaplama Python Ayrıştırıcı kullanarak Çift Tırnak Bul / Değiştir?


16

Ben bir adres alanında çift tırnak şerit alan hesap makinesi (ArcMap 10.0) kullanmaya çalışıyorum (Ben onları orada koymak vermedi, inan bana). Birçok büyüyü denedim ama hala bir hesaplama ile yerden çıkamıyorum. evet, her iki alan da dizedir ve her ikisi de kabul edilebilir uzunluktadır.

Bu hesaplama: Örnek hesaplama

Buradaki sonuçlar:

başarısız

Sonuçlar iletişim kutusundaki bu hata iletisiyle:

hata mesajı

Ve tekrar ediyorum, onları oraya koymadım.


1
Testinizdeki alıntılarla onları kopyalıyorsunuz, zaten tırnak gibi bir şeyle sıyırma girişiminde bulundunuz mu!testing![1:len(!testing!)-1]
Roy

Girdiğiniz snippet aynı mesajla ölüyor.
VanaLondon

Yanıtlar:


16

10.0 Alan Hesaplayıcı oldukça garip buldum.

Ama çalışmasını sağladım. Ana fikir alan adını tek tırnak içine almaktır.

Misal. farz edelim ki tarlalarımız var text1ve text2. Aksine alanını hesaplamak daha text2ifade ile !text1!muhtemelen başarısız olacaktır, bu birini deneyin: '!text1'. Gördüğünüz gibi burada tek tırnak kullanıyorum.

Yani, görevine geri dön. Ön Mantık Komut Dosyası Kodunu kullanmak daha açık olacaktır:

def calc(value):
    return value.replace('"', '')

İfade şöyle olacaktır:

calc('!text1!')

Umarım senin için çalışır.

Ben daha denemedim ama alan hesaplama ArcToolbox aracına çağrıya çevrilir CalculateField_managementve ifade (muhtemelen ek olarak tek veya çift tırnak içine alınmış) bir parametre olarak sağlanır çünkü böyle garip davranış olduğunu düşünüyorum .

GÜNCELLEME:

Alan değerlerinde tek tırnak bulunması durumunda önceki çözümüm başarısız olur text1.

Şimdi özellik ve herhangi bir değer içinde chars 've "(tek ve çift tırnak) olduğunda hem de işe almak başardık text1.

Her iki tırnak türünü de destekleyen orijinal dizeyi döndürecek ifade:

'''!text1!'''[1:-1]

Göreviniz için genişletilebilir (Mantık Öncesi Komut Dosyası Kodu olmadan):

'''!text1!'''[1:-1].replace('"', '')

Umutlarımı kaldırdın ama bu benim için işe yaramıyor. Ne '!testing!'
kod bloğu

Hm, 10.0sp4'ümde çalıştı. Belki de alanınızda bir yerde tek bir teklif var ... Python betiğinde UpdateCursor kullanmayı düşündünüz mü?
Alex Markov

2
Biliyor musun? haklısın, işe yarıyor. Benim 3:00 suyu uyanmak yoktu. Sen kazandın.
valveLondon

Sorunu tek bir alıntı ile çözmeyi başardım. Cevaba ilişkin güncellememi kontrol et.
Alex Markov

Ön Mantıksal Komut Dosyası Kodu bir komut dosyasında kullanıldığında iyi çalıştı - çok teşekkürler
meryloo

10

10.1 sürümünü kullanıyorsanız ve kullanabileceğiniz her çift tırnak örneğinden kurtulmak istediğinizden eminseniz:

!testing!.replace("\"","")

Herkes bunun 10.1 değil, 10.0 neden çalıştığını biliyorsa ben ilgilenirim.

İşte koşumdan sonuçlar girişi.

resim açıklamasını buraya girin


Burada sihir numarası nedir, senaryonuz çalışmadı mı?
artwork21

Bu işe yaramıyor. Öyle görünüyor, ama değil.
KiloGeo

Her iki alanınız da metin doğru mu?
TurboGus

@Gus, Evet alanı metindir.
artwork21

2
10.1 kullanmıyorum. 10.0 kullanıyorum - sooooo 2011 olan arkaik sürüm.
valveLondon

8

İşte bunu yapmak için komut dosyası olmayan bir yol.

  1. Katmanınızda oturumu düzenlemeye başlayın.
  2. Tabloyu açın ve alan sütununu vurgulayın.
  3. Tablo Seçenekleri açılır okunu ve Bul ve Değiştir'i seçin.
  4. Değiştir sekmesini seçin ve Ne bul: girin ", Tümünü değiştir'i seçin (Tümünü Değiştir düğmesini iki kez tıklamanız gerekir).

olasılığı takdir ederken, ben sadece çift tırnak değiştirmek istemiyorum ve ben komut dosyası ile çalışmak istiyorum.
VanaLondon

3

Sistemimde hibrit bir yaklaşım işe yaradı:

'!testing!'.replace("\"","")

2

Bu Arc içinde denemedim, ama bu (hızlı) şekilde bir Python IDE bir dizeden çift tırnak kaldırmak başardı:

aStr ='"test"'

a1 = aStr.lstrip('"')
a2 = a1.rstrip('"')

print a2

a2 tırnak işareti olmadan test yazdırır.


Bunun, sorunuzun 'Bul' kısmına yardımcı olmadığını anlıyorum ...
Timothy Michael

0

merhaba böyle tek tırnak kullanmayı deneyin! test! .replace ('"', '')


Merhaba, bu çalışmıyor.
valveLondon

0

Eski VBScript işlevi ile oldukça kolay buldum: Replace ([testing],"""","")

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.