Страница 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")
то выборка делается.
Видимо так нельзя параметр задавать для этого инструмнта. Подскажите пожалуйста как правильно писать. Спасибо