Похож на проблему поточной обработки.
Гипотеза : Возможно, у Вас есть основной поток и поток таймера, получающий доступ к этому управлению. Основной поток закрывается - называющий Управление. Расположите (), чтобы указать, что я сделан с этим Управлением, и я не выполню больше вызовов к этому. Однако поток таймера все еще активен - контекстное переключение к тому потоку, где это может назвать методы на том же управлении. Теперь управление говорит, что я Расположен (уже брошенный мои ресурсы), и я не буду больше работать. Исключение ObjectDisposed.
, Как решить это : В потоке таймера, перед тем, чтобы называть методы/свойства на управлении, делают проверку с
if ControlObject.IsDisposed then return; // or do whatever - but don't call control methods
ИЛИ останавливают поток таймера ПРЕЖДЕ, ЧЕМ расположить объект.
>>> import ast
>>> print ast.literal_eval("(8, 12.25), (13, 15), (16.75, 18.5)")
((8, 12.25), (13, 15), (16.75, 18.5))
def parse(s):
tuples = s.split('), ')
out = []
for x in tuples:
a,b = x.strip('()').split(', ')
out.append((float(a),float(b)))
return out
это должно сработать.
Я использовал safe_eval для подобных работ в прошлом.
Если вы работаете с файлом CSV и вам нужно нечто большее, чем «наивное» решение, которое не обрабатывает никаких ошибок, вам, вероятно, лучше всего использовать Python Модуль CSV .
Скачать PyParsing .
Я уже работал с ним раньше. Вы можете получить из него довольно надежное поведение синтаксического анализа, и я думаю, что он предоставляет встроенные функции, которые будут обрабатывать все ваши потребности в синтаксическом анализе с помощью такого рода вещей. Найдите commaSeparatedList и nestedExpr.
что плохого в том, чтобы делать это систематически? разделить на ")", затем просмотреть список, удалить все "(".
>>> s="(8, 12.25), (13, 15), (16.75, 18.5)"
>>> [ i.replace("(","") for i in s.split(")") ]
['8, 12.25', ', 13, 15', ', 16.75, 18.5', '']
>>> b = [ i.replace("(","") for i in s.split(")") ]
>>> for i in b:
... print i.strip(", ").replace(" ","").split(",")
...
['8', '12.25']
['13', '15']
['16.75', '18.5']
['']
Теперь вы можете добавить каждый элемент в свою структуру данных.