Проблемы с чтением символа '*' в Python в новую строку

Я пытаюсь удалить многострочные комментарии SQL в тексте SQL и выполнить оставшиеся операторы. В результате должна получиться новая строка, в которой отсутствуют все многострочные комментарии SQL.

Однако при чтении символа '*' из оператора SELECT вывод строки становится неверным. Логически это не имеет никакого смысла. Хотите знать, есть ли какие-либо известные ошибки Python с этим персонажем?

#sql = "actual sql code goes here; \n /*comment #1*/ more sql code would go 
#here; \n more renditions of SQL code here; \n /*comment #2*/ SELECT*FROM 
#TABLE;"

sql = "SELECT* FROM TABLE a WHERE THIS TRUE"

sql_2 = ""
flag = True

try:

    for index, character in enumerate(sql):
        while (flag):
            if character != r'/' and sql[index + 1] != r'*':
                sql_2 += character
                flag = True
                break
            else:
                flag = False

        if (character == r'*' and sql[index + 1] == r'/'):
            flag = True

        elif (character == r'/' and sql[index - 1] == r'*'):
            flag = True

except IndexError:
    if character != r'/':
        sql_2 += character

print(sql_2)

Ожидаемый результат: 'SELECT* FROM TABLE a WHERE THIS TRUE'

Фактический результат: 'SELEC'


person Taylor    schedule 24.07.2018    source источник
comment
вам лучше сделать это с модулем re (regex)   -  person Baptiste Mille-Mathias    schedule 24.07.2018
comment
Я подозреваю, что отступ второго оператора if-elif неверен. Его нет в цикле while.   -  person DYZ    schedule 24.07.2018
comment
@DYZ, вы правы, это была ошибка, когда я пытался скопировать код.   -  person Taylor    schedule 24.07.2018


Ответы (1)


person    schedule
comment
Это сработало, большое спасибо @mVChr. Сегодня мы работали с регулярными выражениями около получаса, но не смогли придумать это. Это сработало. Большое спасибо! - person Taylor; 24.07.2018