이 Q & A를 통해 _
특정 텍스트 필드에서 밑줄 ( ) 이 포함 된 레코드로 커서를 제한 할 수있는 ArcPy 검색 커서에서 where 절을 사용할 수없는 이유를 해결하는 데 도움이되었습니다 .
내가 그것을 발견했을 때 나는 이미 문제를 설명하기 위해 코드 스 니펫을 개발 했으므로 그 노력을 낭비하지 않고 솔루션을 추가했으며 지금은 동일한 문제로 미래 방문자를 돕기 위해 여기에 게시하고 있습니다.
이 테스트는 파일 지오 데이터베이스를 사용하며 ArcGIS 10.2.2 for Desktop에서 실행되었습니다.
import arcpy
arcpy.CreateFileGDB_management(r"C:\Temp","test.gdb")
arcpy.CreateFeatureclass_management(r"C:\Temp\test.gdb","testFC")
arcpy.AddField_management(r"C:\Temp\test.gdb\testFC","testField","Text")
cursor = arcpy.da.InsertCursor(r"C:\Temp\test.gdb\testFC",["testField"])
cursor.insertRow(["ABCD"])
cursor.insertRow(["A_CD"])
cursor.insertRow(["XYZ"])
cursor.insertRow(["X_Z"])
del cursor
where_clause = "testField LIKE '%C%'"
print("Using where_clause of {0} to limit search cursor to print any values containing the letter C:".format(where_clause))
with arcpy.da.SearchCursor(r"C:\Temp\test.gdb\testFC",["testField"],where_clause) as cursor:
for row in cursor:
print(row[0])
print("This is the expected result :-)")
where_clause = "testField LIKE '%_%'"
print("\nUsing where_clause of {0} to limit search cursor to print any values containing an underscore (_):".format(where_clause))
with arcpy.da.SearchCursor(r"C:\Temp\test.gdb\testFC",["testField"],where_clause) as cursor:
for row in cursor:
print(row[0])
print("This is not what I was hoping for :-(")
where_clause = "testField LIKE '%$_%' ESCAPE '$'"
print("\nUsing where_clause of {0} to limit search cursor to print any values containing an underscore (_):".format(where_clause))
with arcpy.da.SearchCursor(r"C:\Temp\test.gdb\testFC",["testField"],where_clause) as cursor:
for row in cursor:
print(row[0])
print("This is what I was hoping for :-)")
출력은 다음과 같습니다.
>>>
Using where_clause of testField LIKE '%C%' to limit search cursor to print any values containing the letter C:
ABCD
A_CD
This is the expected result :-)
Using where_clause of testField LIKE '%_%' to limit search cursor to print any values containing an underscore (_):
ABCD
A_CD
XYZ
X_Z
This is not what I was hoping for :-(
Using where_clause of testField LIKE '%$_%' ESCAPE '$' to limit search cursor to print any values containing an underscore (_):
A_CD
X_Z
This is what I was hoping for :-)
>>>
\
입니다. Oracle에서도 마찬가지\_
입니다. 따라서 밑줄을 검색 할 때 찾아보고 싶을 것 입니다.