Próbuję użyć kalkulatora pola (ArcMap 10.0) do usunięcia podwójnych cudzysłowów w polu adresu (nie umieszczaj ich tam, uwierz mi). Próbowałem wielu zaklęć, ale wciąż nie jestem w stanie zejść z obliczeń. tak, oba pola są ciągami i oba mają dopuszczalną długość.
To obliczenie:
Wyniki w tym:
Z tym komunikatem o błędzie w oknie dialogowym Wyniki:
I powtarzam, nie umieściłem ich tam.
arcgis-desktop
arcgis-10.0
arcmap
field-calculator
python-parser
klapa Londyn
źródło
źródło
!testing![1:len(!testing!)-1]
Odpowiedzi:
Przekonałem się, że w 10.0 Field Calculator jest dość dziwny.
Ale udało mi się to uruchomić. Główną ideą jest dołączenie nazwy pola do pojedynczych cudzysłowów.
Przykład. załóżmy, że mamy pola
text1
itext2
. Zamiast Obliczanie polatext2
z wyrazem!text1!
, który prawdopodobnie zakończy się niepowodzeniem, spróbuj tego:'!text1'
. Jak widzisz, używam tutaj pojedynczych cytatów.Wróćmy do swojego zadania. Bardziej zrozumiałe będzie użycie kodu skryptu przedlogicznego:
Wyrażenie będzie:
Mam nadzieję, że ci się uda.
Nie eksperymentowałem dalej, ale myślę, że takie dziwne zachowanie ma miejsce, ponieważ obliczenia pola są tłumaczone na wywołanie narzędzia ArcToolbox,
CalculateField_management
a wyrażenie jest podawane jako parametr (prawdopodobnie dodatkowo w postaci pojedynczych lub podwójnych cudzysłowów).AKTUALIZACJA:
Moje poprzednie rozwiązanie zawiedzie w przypadku, gdy w wartościach pola występują pojedyncze cudzysłowy
text1
.Teraz udało mi się sprawić, by działał zarówno w przypadku znaków, jak
'
i"
(pojedynczych i podwójnych cudzysłowów) w dowolnej wartości atrybututext1
.Oto wyrażenie, które zwróci oryginalny ciąg znaków, obsługujący oba typy cudzysłowów:
W przypadku zadania można go rozszerzyć na (bez kodu skryptu przedlogicznego):
źródło
'!testing!'
Jeśli używasz wersji 10.1 i jesteś pewien, że chcesz pozbyć się każdego wystąpienia podwójnego cudzysłowu, którego możesz użyć:
Jeśli ktoś wie, dlaczego to działa w wersji 10.1, a nie 10.0, byłbym zainteresowany.
Oto wpis wyników z mojego biegu.
źródło
Oto sposób, aby to zrobić.
"
wybierz Zamień wszystko (będziesz musiał dwukrotnie kliknąć przycisk Zamień wszystko).źródło
W moim systemie działało podejście hybrydowe:
źródło
Nie próbowałem tego w Arc, ale byłem w stanie usunąć podwójne cudzysłowy z łańcucha w IDE Pythona w ten (szybki) sposób:
a2 drukuje test, bez cudzysłowów.
źródło
cześć, spróbuj użyć pojedynczych cytatów takich jak ten! test! .replace ('”,„ ”)
źródło
Znalazłem całkiem proste ze starą funkcją VBScript:
Replace ([testing],"""","")
źródło