2013-12-21 4 views
1

이것은 this post의 후속 조치입니다. 다시 말하면 주어진 위치의 메타 데이터 및 측정 데이터가 포함 된 텍스트 파일이 있습니다. ArcGIS라는 공간 매핑 소프트웨어에이 데이터를 쓰고 싶습니다. 목록의 각 값에 대해 ArcGIS에 정의 된 데이터 형식 을 지정해야합니다. 예를 들어 :python 데이터 유형을 사전을 사용하여 다른 언어의 데이터 유형으로 번역하십시오.

type("foo") 

는 파이썬에서 str 제공하지만,는 ArcGIS에서 text로 알려져 있습니다. 따라서 목록에있는 모든 요소의 데이터 유형을 ArcGIS의 적절한 데이터 유형으로 변환하려고합니다. 이런 식으로 뭔가 :

# This is the raw data that I want to write to ArcGIS 
foo= ['plot001', '01-01-2013', 'XX', '10', '12.5', '0.65', 'A'] 
# The appropriate datatypes in Python are: 
dt= [str, str, str, int, float, float, str] 
# In ArcGIS, the datatypes should be: 
dtArcGIS= ['text', 'text', 'text', 'short', 'float', 'float', 'text'] 

질문은 : 가 어떻게 dtArcGISdt에서 올 수 있습니까? 나는 dictionary을 다음과 같이 생각하고 있었다 :

dtDict= dict{str:'text', int:'short', float:'float'} 

그러나 구문 오류가 발생한다. 어떤 도움을 주시면 감사하겠습니다. 당신은 두 가지 형식을 혼합하는

+0

제거를'변환하는 방법입니다 dict', 중괄호는 이미 그것을 dict으로 정의합니다. 'dtDict = {str :'text ', int :'short ', float :'float '}' – Ben

+0

'type ('10 ')'은'int'가 아닌'str'이다. – alko

+0

지적 해 주셔서 감사합니다! – HDR

답변

1

, 그냥이

dtDict = {str:'text', int:'short', float:'float'} 

같은 dict를 제거 그리고 이것은 당신이 유형을

foo = ['plot001', '01-01-2013', 'XX', '10', '12.5', '0.65', 'A'] 
from ast import literal_eval 

dt = [] 
for item in foo: 
    try: 
     dt.append(type(literal_eval(item))) 
    except: 
     dt.append(str) 

dtDict = {str:'text', int:'short', float:'float'} 
print map(dtDict.get, dt) 

출력

['text', 'text', 'text', 'short', 'float', 'float', 'text'] 
관련 문제