2016-04-01 3 views
0

Я делаю язык в Python для моего класса Computer Science, и мне нужно знать, как читать определенные части строки в файле. Например, если в первой части есть «для», тогда прочитайте whats в «()», затем проверьте «{», а затем перейдите к следующей строке. Я пробовал использовать «if x in line:», но это не гарантирует, что он в правильном порядке. Я также не могу понять, как получить только небольшую часть строки, такую ​​как первые три буквы, или следующие три буквы после первых трех. Я пытаюсь сделать это без необходимости использовать символы как отдельные переменные или как список. Я предпочитаю, чтобы небольшая часть была сохранена как строка, чтобы реализовать эту часть в другом скрипте после того, как она читает строку.Чтение выделенных частей строки из существующего файла

+0

Вы имеете в виду создание парсера языка? Используйте строку split для создания списка строк отдельных токенов. Это отличается от списка букв. – roadrunner66

+0

Спасибо, я попытаюсь реализовать это сейчас, я посмотрю, что я сможет сделать! – Piguinrulist

ответ

1

Регулярные выражения могут проверить синтаксис строки для вас, прежде чем вы ее разделите. Например, с помощью JavaScript/стиле C для цикла:

for(x=1;x<=10;x++){ //Note, some coders drop this { to the next line. 
    do_something(); 
} 

Питон RE будет что-то вроде:

import re 
if re.match("for([\w|\S]+)[{|\S]", line.strip()): 
    from_first_bracket = line.split("(")[1] 
    for_loop_conditions = from_first_bracket.split(";") 
    # last item in for_loop_conditions list has extra punctuation: 
    for_loop_conditions[2] = for_loop_conditions[2].split(")")[0] 

Сейчас в переменной for_loop_conditions хранится: [ 'х = 1',» x < = 10 ',' x ++ '] Линия полосатая, чтобы избавиться от любых простейших пробелов, которые кодер, возможно, поставил перед своей петлей для обозначения вложенности. Я не учитывал пробел между «за» и «(» или «пробел» пробела из окончательного списка, но я учёл запись {на следующей строке и увеличение на x = x + 2.

Смежные вопросы