Страница 1 из 1
					
				Помогите написать часть скрипта на Python'e
				Добавлено: 03 июл 2008, 10:05
				 JGBoBBy
				Задача такая: нужно делать выборку из таблицы по определенному значению, которое должен задавать пользователь вводя данные в инструмент.
Вот строка которая делает выборку:
gp.SelectLayerByAttribute_management(feature, "NEW_SELECTION", "\"NAME\" <> 111111")
- данные - feature, поле NAME, значение 111111.
Эта строка появилась, когда я экспортровал модель с инструментом SelectLayerByAttribute.
Необходимо чтобы при старте тула, человек забивал значение, которое будет искаться в поле NAME.
Например создаем переменную:
value = sys.argv[1]
Но как потом эту переменную впихнуть в это - 
"\"NAME\" <> 111111"
Вся проблема в том, что выражение должно быть написано в ковычках.
Поделитесь опытом плиз. Спасибо
			 
			
					
				Re: Помогите написать часть скрипта на Python'e
				Добавлено: 03 июл 2008, 10:43
				 KolesovDmitry
				JGBoBBy писал(а):
Вот строка которая делает выборку:
gp.SelectLayerByAttribute_management(feature, "NEW_SELECTION", ""NAME" <> 111111")
Необходимо чтобы при старте тула, человек забивал значение, которое будет искаться в поле NAME.
Например создаем переменную:
value = sys.argv[1]
Но как потом эту переменную впихнуть в это - 
""NAME" <> 111111"
Попробуйте что-нибудь вроде:
Тогда, если vauee=546, то результатом выражения будет строка "NAME"<>546
Можно попробовать
Результат: "NAME"<>"546"
 
			
					
				
				Добавлено: 03 июл 2008, 10:51
				 JGBoBBy
				Спасибо.
Но так не покатывает...
Выражение должно быть точно: 
"\"NAME\" <> 111111" - в кавычках снаружи.
Либо "[NAME] <> 111111" - вроде такое тоже должно прокатить. Как поставить внешние кавычки?
			 
			
					
				
				Добавлено: 03 июл 2008, 10:52
				 JGBoBBy
				Так?
'"[Name]<>'+str(value)+'"'
			 
			
					
				
				Добавлено: 03 июл 2008, 10:55
				 JGBoBBy
				Точно так.. Спасибо, я не знал про одинарные кавычки...
Все работает
			 
			
					
				Re: Помогите написать часть скрипта на Python'e
				Добавлено: 03 июл 2008, 11:29
				 JGBoBBy
				KolesovDmitry писал(а):JGBoBBy писал(а):
Вот строка которая делает выборку:
gp.SelectLayerByAttribute_management(feature, "NEW_SELECTION", ""NAME" <> 111111")
Необходимо чтобы при старте тула, человек забивал значение, которое будет искаться в поле NAME.
Например создаем переменную:
value = sys.argv[1]
Но как потом эту переменную впихнуть в это - 
""NAME" <> 111111"
Попробуйте что-нибудь вроде:
Тогда, если vauee=546, то результатом выражения будет строка "NAME"<>546
Можно попробовать
Результат: "NAME"<>"546"
 
Все-таки нужно выражение именно такого вида:
""NAME" =111111"
в ковычках и со слешами... Как сделать? 
Делаю так: 
print '""NAME"'
результат
""NAME"
А как слеши сделать???
Спасибо
 
			
					
				Re: Помогите написать часть скрипта на Python'e
				Добавлено: 03 июл 2008, 12:17
				 KolesovDmitry
				JGBoBBy писал(а):
Все-таки нужно выражение именно такого вида:
""NAME" =111111"
в ковычках и со слешами... Как сделать? 
Если нужно именно в кавычках и со слешами, то попробуйте
Результатом должно быть
Того же результата можно добиться и так:
 
			
					
				
				Добавлено: 03 июл 2008, 13:05
				 JGBoBBy
				Не могу понять в чем проблема. Нужно получить следующее:
gp.SelectLayerByAttribute_management(feature, "NEW_SELECTION", "\"NAME\" = 555") 
Пытаюсь так:
value = 555
print '"\\"NAME\\" =' + str(value) + '"'
gp.SelectLayerByAttribute_management(feature, "NEW_SELECTION", '"\\"NAME\\" =' + str(value) + '"') 
результат print - "\"NAME\" = 555" - т.е. эта часть правильна, но результат выборки - 
Traceback (most recent call last):
  File "***", line 62, in <module>
    gp.SelectLayerByAttribute_management(feature, "NEW_SELECTION", '"\\"NAME\\" = ' + str(value) + '"')
ExecuteError: ERROR 000358: Invalid expression
Failed to execute (SelectLayerByAttribute).
Пытался так:
value = 555
exp = '"\\"NAME\\" =' + str(value) + '"'
print exp
gp.SelectLayerByAttribute_management(feature, "NEW_SELECTION", exp) 
Таже ошибка.
А вот если пишу так: 
gp.SelectLayerByAttribute_management(feature, "NEW_SELECTION", "\"NAME\" = 555") 
то выборка делается. 
Видимо так нельзя параметр задавать для этого инструмнта. Подскажите пожалуйста как правильно писать. Спасибо