Помогите, пожалуйста решить такую задачу. С построением выражений раньше не сталкивалась, да и вообще, если честно, в написании чего-либо на python или VBScript я не сильна. 
Ситуация следующая, в поле, по которому я ставлю подписи, находится полный адрес зданий, а мне надо вычленить только номера домов + литер. Вот пример одного из адресов: Санкт-Петербург, город Петергоф, улица Дзержинского, дом 21, литер А. Как мне из всего этого получить 21А?
Спасибо заранее!
			
			
									
						
										
						построение label expression
- julia
- Новоприбывший
- Сообщения: 3
- Зарегистрирован: 28 ноя 2013, 21:00
- Репутация: 0
- Откуда: Krasnodar
- 
				doujin
- Активный участник
- Сообщения: 163
- Зарегистрирован: 28 июн 2012, 01:02
- Репутация: 84
- Откуда: Vladivostok
Re: построение label expression
Если у вас действительно все записи оформлены как "Санкт-Петербург, город Петергоф, улица Дзержинского, дом 21, литер А", то есть части адреса разделены запятыми, литера и дом идут последними, а части внутри имеют пробел, то можно использовать следующий код на python:
В окне составления выражения поставьте галочку Advanced и скопируйте туда код. Замените field1 на название вашего поля с адресами. В качестве парсера не забудьте выбрать python.
			
			
									
						
										
						Код: Выделить всё
def FindLabel ( [field1] ):
  s = [field1]
  sub_s1 = s.split(u',')[-1].split(u' ')[-1]
  if sub_s1.isnumeric():
    return sub_s1
  else:
    sub_s2 = s.split(u',')[-2].split(u' ')[-1]
    return sub_s2 + sub_s1В окне составления выражения поставьте галочку Advanced и скопируйте туда код. Замените field1 на название вашего поля с адресами. В качестве парсера не забудьте выбрать python.
- julia
- Новоприбывший
- Сообщения: 3
- Зарегистрирован: 28 ноя 2013, 21:00
- Репутация: 0
- Откуда: Krasnodar
Re: построение label expression
Спасибо, за помощь, но выражение не срабатывает. Выкидывает ошибку:
---------------------------
ArcMap
---------------------------
The expression contains an error.
Modify the expression and try again.
Error 0 on line 0.
Error running expression: FindLabel(ESRIExpressionArg0)
Traceback (most recent call last):
File "<expression>", line 1, in <module>
File "<string>", line 7, in FindLabel
IndexError: list index out of range
.
---------------------------
OK
---------------------------
			
			
									
						
										
						---------------------------
ArcMap
---------------------------
The expression contains an error.
Modify the expression and try again.
Error 0 on line 0.
Error running expression: FindLabel(ESRIExpressionArg0)
Traceback (most recent call last):
File "<expression>", line 1, in <module>
File "<string>", line 7, in FindLabel
IndexError: list index out of range
.
---------------------------
OK
---------------------------
- 
				doujin
- Активный участник
- Сообщения: 163
- Зарегистрирован: 28 июн 2012, 01:02
- Репутация: 84
- Откуда: Vladivostok
Re: построение label expression
Значит у вас не все записи соответствуют шаблону. Судя по ошибке, есть строки, в которых вообще нет запятых. Можно поправить скрипт так:
			
			
									
						
										
						Код: Выделить всё
def FindLabel ( [field1] ):
  s = [field1]
  if u',' in s:
    sub_s1 = s.split(u',')[-1].split(u' ')[-1]
    sub_s2 = s.split(u',')[-2].split(u' ')[-1]
  else:
    sub_s1 = sub_s2 = u''
  if sub_s1.isnumeric():
    return sub_s1
  else:
    return sub_s2 + sub_s1- julia
- Новоприбывший
- Сообщения: 3
- Зарегистрирован: 28 ноя 2013, 21:00
- Репутация: 0
- Откуда: Krasnodar
Re: построение label expression
Спасибо огромное!! Второй скрипт сработал отлично, все получилось!
			
			
									
						
										
						Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 9 гостей
