Срезать строку после периода и до следующего пробела - PullRequest
0 голосов
/ 12 февраля 2020

Я перебираю SQL операторов (строк), которые выглядят следующим образом ...

'SELECT COL_1, COL_2, COL_3 from SCHEMA_1.TABLE_ABC MINUS SELECT COL_1, COL_2, COL_3 from SCHEMA_2.TABLE_WXYZ..'

Каждый раз, когда я * oop, я хочу захватить первый имя таблицы и хранить его. Так что ничего после первого периода (.) И до следующего пробела. Желаемый результат из приведенного выше примера:

TABLE_ABC

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 12 февраля 2020

Вы можете использовать re.findall здесь:

inp = 'SELECT COL_1, COL_2, COL_3 from SCHEMA_1.TABLE_ABC MINUS SELECT COL_1, COL_2, COL_3 from SCHEMA_2.TABLE_WXYZ..'
table_name = re.findall(r'\bfrom\s+[^.]+\.(\S+)', inp, flags=re.IGNORECASE)[0]
print(table_name)

Это печатает:

TABLE_ABC
1 голос
/ 12 февраля 2020

Вы можете сделать это в чистом виде Python без импорта каких-либо модулей:

query = 'SELECT COL_1, COL_2, COL_3 from SCHEMA_1.TABLE_ABC MINUS SELECT COL_1, COL_2, COL_3 from SCHEMA_2.TABLE_WXYZ..'    
print(query.split('.', 1)[1].split(' ', 1)[0])
# TABLE_ABC
...