Необходимо отпарсить файл (ISO 10303 STEP), содержащий в себе всякую разную инфу и в том числе строковые переменные
Ниже две строки из файла:
#80=ADVANCED_FACE('PartBody',(#79),#56,.T.) ;
#4=APPLICATION_PROTOCOL_DEFINITION('international standard','config_control_design',1994,#1) ;
#!/usr/bin/python
from pyparsing_py2 import *
import string
ap = "\'"
space = " "
non_q_char = space.join([c for c in printables if c not in """_'\~"""])
string_par = Combine(Word(ap, exact=1) + Word(non_q_char) + Word(ap, exact=1))
f = open("Orb.stp", "r")
text = f.read()
f.close()
instances = string_par.searchString(text)
for instance in instances:
print instance
Теперь вопрос: как сделать так, чтобы обрабатывались эти пары внутри строки:
FILE_NAME('C:\\Documents\\ASD\\ASDSEE\\STEP\\Orb.stp','2009-04-04T09:15:46+00:00',('none'),('none'),'dfgvdfv''sdfdsfsf','fd3','none');
Спасибо, жду ответов, можно здесь, можно на мыло.
В догонку ещё вопрос:
Как правильно обработать замкнутые правила? Как избежать ошибок, что name ‘parameter’ is not defined?
typed_parameter = keyword + opbr + parameter + clbr
untyped_parameter = undefined_parameter | integer | real | string_par | entity_instance_name | enumeration | binary | listed
parameter = typed_parameter | untyped_parameter | omitted_parameter
Вот что нашёл по 2 вопросу, если кому-то кроме меня не интересно, читайте:
http://pyparsing.wikispaces.com/message/view/Publications/13034711
2 вроде бы как решился с помощью функции Forward()
1 вопрос решился с помощью quotedString
Как ни странно, он именно пары апострофов включает в строку, не разбивает на две. А видимо слэши вообще ест как есть в любых количествах.
Отличный монолог у меня получился…….