Найти - Пользователи
Полная версия: Русский язык в названии переменных
Начало » Python для новичков » Русский язык в названии переменных
1 2
Александр Коробкин
Доброго времени суток всем форумчанам!

Стараюсь избегать кирилицы в коде, но здесь не тот случай((

UC=gp.UpdateCursor(NP,“”,“”,“SOATO; Сельсовет”,“”)
UCi=UC.next()
while UCi:
UCi.Сельсовет = D[UCi.SOATO]
UC.UpdateRow(UCi)
UCi=UC.next()
Функций UpdateCursor помогает изменить значение ячейки в столбце таблицы. Столбец имеет русское название (в данном случае “Сельсовет”). Когда слово “Сельсовет” выступает аргументом в скобках, то проблем не возникает. Но когда оно же становится методом, то появляется ошибка: There's an error in your program: invalid syntax
Ошибка возникает только когда я загружаю в IDLE скрипт целиком. Когда я выполняю скрипт до этого блока, а зетем ввожу этот блок построчно в IDLE - он чудесным образом работает.

Как достичь автоматического выполнения данного блока? Прошу советов…
Андрей Светлов
# encoding: <whatever>
в начале файла
Александр Коробкин
# encoding: <whatever>
Отлично! Из IDLE заработало как надо. СпасиБо!!!


1. Как сделать, чтобы скрипт работал через python.exe?
2. Где можно прочесть об этих командах в начале программы и о кодировании вообще?
Yurietc
Здравствуйте.
О кодировках есть чудесная статья http://www.py-my.ru/post/4bfb3c6a1d41c846bc00009b Ссылку нашел в одной из предыдущих тем.
Если я правильно понял суть первого вопроса - сохранять питоновские файлы с расширением pyw.

А что касается кирилицы в названиях переменных, имхо, я б не стал, вплоть до написания парсера с последующей транслитерацией.


Special cases aren't special enough to break the rules.

:)
Александр Коробкин
Yurietc
А что касается кирилицы в названиях переменных, имхо, я б не стал, вплоть до написания парсера с последующей транслитерацией.
Я уже говорил - это вынужденная мера. Названия столбцов таблицы на русском.

Yurietc
Если я правильно понял суть первого вопроса - сохранять питоновские файлы с расширением pyw.
Не понимаю зачем. Расширение не играет роли.

3. Почему из IDLE выполняется, а напрямую через python.exe прерывается на старте?
Видимо не происходит компиляция исходного текста в байт-код.
Yurietc
Александр Коробкин
Yurietc написал:

Если я правильно понял суть первого вопроса - сохранять питоновские файлы с расширением pyw.

Не понимаю зачем. Расширение не играет роли.
Я действительно неправильно понял вопрос. Теперь ясно.
Если через IDLE выполняется, значит все правильно написано. Я думаю проблема в кодировке. Как решить ? - долго и упорно копаться в вашей системе, а так не смогу ничего подсказать.

А почему не подходит решение написать парсер, который прочитает все названия на русском и заменит их на транслит ?
diam123
А вообще, если через IDLE запускается, то скорее всего, файл (или отдельные строки/символы) в одной кодировке, а в #-*-encoding:UTF-8-*- прописана другая.
Я бы сделал так:
#-*-encoding:UTF-8-*-
DB_ENC = u"UTF-8" #Кодировка базы

UC=gp.UpdateCursor(NP,"","",u"SOATO; Сельсовет".encode(DB_ENC),"")
UCi=UC.next()
while UCi:
# UCi.Сельсовет = D[UCi.SOATO[4:6]]
setattr(UCim, u"Сельсовет".encode(DB_ENC), D[UCi.SOATO[4:6]])
UC.UpdateRow(UCi)
UCi=UC.next()
Александр Коробкин
Yurietc, diam123 благодарю за участие! Все взял на заметку - буду разбираться
Тем временем, я нашел функцию, которая делает тоже самое действие, но название поля стало аттрибутом
    UCi.Сельсовет = D[UCi.SOATO[4:6]]
UC=gp.UpdateCursor(NP,"","","SOATO; Сельсовет","")
UCi=UC.next()
while UCi:
UCi.SetValue("Сельсовет",D[UCi.SOATO[4:6]])
UC.UpdateRow(UCi)
UCi=UC.next()
Все заработало. Но другой раз можно такой функции и не найти.
Всем еще раз большое СПАСИБО!!!
PooH
ArcGIS? А попробуйте, кстати, такое работает? getattr(UCi, u“Сельсовет”) и setattr(UCi, u“Сельсовет”, u“Нижнерукский”)
Андрей Светлов
setattr/getattr из двойки не заработают. А вот UCi.__dict__ = u'Нижнеруксуий' сделать можно.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB