#python #list #append
Вопрос:
У меня есть хранимая процедура, хранящаяся в виде файла .txt. Я пытаюсь сохранить все «соединения» в файл. Я знаю, как изолировать некоторые соединения, разбив файл txt на строки и прочитав их:
mylist[]
for line in lines:
if line.startswith('inner'):
mylist.append({'join': line})
Однако проблема возникает в том случае, когда некоторые соединения не находятся в одной строке.
Например:
inner join tablea a
on tableb.id = a.id
inner join tablec c
on tabled.id = c.id
left outer join tabled d
on tablee.id = d.id
Можно ли объединить несколько строк (все строки после первого ключевого слова «внутренний» и перед следующим ключевым словом «внутренний») в одну строку? Делаем что-то похожее на это:
inner join tablea a on tableb.id = a.id
inner join tablec c on tabled.id = c.id
left outer join tabled d on tablee.id = d.id
etc
Я, по общему признанию, новичок, думаю об этом, чтобы найти в txt-файле строки, начинающиеся с ключевых слов, таких как » вкл.», а затем добавить эту строку к строке над ней. Оттуда я могу просто извлечь все строки, которые начинаются либо с «внутреннего», либо с «левого».
Комментарии:
1. Пожалуйста, предоставьте образец, представляющий полный текстовый файл, который у вас есть. Что бы вы сделали для последней
inner join
строки перед следующей хранимой процедурой?2. Не называйте список
list
для начала…3. Похоже, вам следует искать синтаксический анализатор SQL, а не создавать его самостоятельно, особенно если вы новичок в Python.
Ответ №1:
Это работает:
a = open("./textFile")
lines = a.readlines()
L = []
for i in range(len(lines)):
if lines[i].startswith('inner'):
temp = i 1
toAdd = lines[i]
while not lines[temp].startswith("inner") and temp < len(lines)-1:
toAdd = lines[temp]
temp =1
toAdd = toAdd.replace("n", "")
L.append({'join': toAdd})
print(L)