ArcGIS Field Calculator의 Python Parser를 사용하여 큰 따옴표를 찾거나 바꾸시겠습니까?


16

주소 필드에서 큰 따옴표를 제거하기 위해 필드 계산기 (ArcMap 10.0)를 사용하려고합니다 (나는 거기에 넣지 않았습니다, 믿습니다). 나는 많은 주문을 시도했지만 여전히 계산으로 땅을 벗어날 수는 없습니다. 예, 두 필드는 모두 문자열이며 둘 다 허용되는 길이입니다.

이 계산 : 샘플 계산

결과는 다음과 같습니다.

불합격

결과 대화 상자에이 오류 메시지가 표시됩니다.

에러 메시지

반복합니다. 나는 거기에 넣지 않았습니다.


1
당신이 당신의 시험에 따옴표와 함께 그들을 복사하는 그래서, 당신은 이미 무엇인가 등으로 따옴표를 제거하려고 한!testing![1:len(!testing!)-1]
로이

제공 한 스 니펫은 동일한 메시지로 종료됩니다.
Valve 런던

답변:


16

10.0 필드 계산기에서 매우 이상하다는 것을 알았습니다.

그러나 나는 그것을 작동 시켰습니다. 주요 아이디어는 필드 이름을 작은 따옴표로 묶는 것입니다.

예. 우리는 필드가 있다고 가정하자 text1text2. 실패 할 수있는 text2expression을 사용하여 필드 를 계산하는 대신 다음을 !text1!시도하십시오 '!text1'. 보시다시피 여기서 작은 따옴표를 사용하고 있습니다.

다시 작업으로 돌아갑니다. 사전 논리 스크립트 코드를 사용하는 것이 더 명확합니다.

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

표현은 다음과 같습니다.

calc('!text1!')

나는 그것이 당신을 위해 작동하기를 바랍니다.

더 이상 실험하지는 않았지만 필드 계산이 ArcToolbox 도구에 대한 호출로 변환되고 CalculateField_management표현식이 매개 변수로 제공되어 (아마도 작은 따옴표 또는 큰 따옴표로 묶여) 이상한 동작이 발생한다고 생각합니다 .

최신 정보:

field 값에 작은 따옴표가 있으면 이전 솔루션이 실패합니다 text1.

이제 attribute의 값 안에 문자 '"(단일 및 큰 따옴표) 가있는 경우 모두 작동하도록했습니다 text1.

다음은 두 가지 유형의 따옴표를 모두 지원하는 원래 문자열을 반환하는 표현식입니다.

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

작업의 경우 (사전 논리 스크립트 코드없이) 다음과 같이 확장 할 수 있습니다.

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

글쎄, 당신은 내 희망을 얻었지만 그것은 효과가 없습니다. '!testing!'
코드 블록

흠, 내 10.0sp4에서 작동했습니다. 아마도 당신의 필드 어딘가에 작은 따옴표가 있기 때문일 수 있습니다 ... 파이썬 스크립트에서 UpdateCursor 사용을 고려 했습니까?
Alex Markov

2
그거 알아? 당신 말이 맞아요. 3시 깨어 난 주스는 없었습니다. 네가 이겼다.
Valve 런던

작은 따옴표로 문제를 해결할 수있었습니다. 답변에 대한 내 업데이트를 확인하십시오.
Alex Markov

사전 논리 스크립트 코드는 스크립트 내에서 사용될 때 잘 작동했습니다 – 많은 감사
meryloo

10

버전 10.1을 사용하고 있고 큰 따옴표의 모든 인스턴스를 제거하려면 다음을 사용할 수 있습니다.

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

왜 이것이 10.0이 아닌 10.1에서 작동하는지 알고 있다면 관심이 있습니다.

내 실행 결과 항목은 다음과 같습니다.

여기에 이미지 설명을 입력하십시오


여기서 마술은 무엇입니까, 스크립트가 작동하지 않습니까?
artwork21

작동하지 않습니다. 그것은 해야하는 것처럼 보이지만 그렇지 않습니다.
KiloGeo

두 필드 모두 텍스트가 맞습니까?
TurboGus

@Gus, Yes 필드는 텍스트입니다.
artwork21

2
10.1을 사용하지 않습니다. 나는 10.0-sooooo 2011 인 그 오래된 버전을 사용하고 있습니다.
valveLondon

8

여기에 스크립트가 아닌 방법이 있습니다.

  1. 레이어에서 세션 편집을 시작하십시오.
  2. 테이블을 열고 필드 열을 강조 표시하십시오.
  3. 테이블 옵션 드롭 다운 화살표를 선택하고 찾기 및 바꾸기를 선택하십시오.
  4. 바꾸기 탭을 선택하고 찾을 내용 :을 입력하고 "모두 바꾸기를 선택하십시오 (모두 바꾸기 단추를 두 번 클릭해야합니다).

가능성에 감사하지만 큰 따옴표를 바꾸고 싶을뿐만 아니라 스크립팅을 통해 작업하고 싶습니다.
Valve 런던

3

내 시스템에서 하이브리드 접근법이 작동했습니다.

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

2

나는 이것을 Arc 내부에서 시도하지는 않았지만 파이썬 IDE의 문자열에서 큰 따옴표를 다음과 같은 방법으로 제거 할 수있었습니다.

aStr ='"test"'

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

print a2

a2는 따옴표없이 테스트를 인쇄합니다.


이것이 귀하의 질문의 '찾기'부분에 도움이되지 않는다는 것을 알고 있습니다.
Timothy Michael

0

안녕!! test! .replace ( ' "', '') 같은 작은 따옴표를 사용해보십시오


안녕하세요, 작동하지 않습니다.
Valve 런던

0

이전 VBScript 함수를 사용하면 매우 쉽다는 것을 알았습니다. Replace ([testing],"""","")

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.