Я пытаюсь удалить многострочные комментарии 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'
re
(regex) - person Baptiste Mille-Mathias   schedule 24.07.2018