Разбор имени таблицы базы данных с помощью регулярных выражений - PullRequest
0 голосов
/ 11 апреля 2019

У меня есть данные, которые содержат имя таблицы базы данных.

с кодом, подобным этому:

for l,col in enumerate(data):
#print(data[l][1])
a = data[l][1]
parse = extract_tables(a)
print(parse)

данные примерно такие:

['public.actor']
['public.film']
['film']
['film', 'rental', 'inventory']
['inventory i', 'customer c', 'film f', 'rental r']
['customer as c', 'rental as r']

я хочу этобыть таким:

['actor']
['film']
['film']
['film', 'rental', 'inventory']
['inventory', 'customer', 'film', 'rental']
['customer', 'rental']

Я хочу удалить «public», «as», а также псевдонимы «c», «f» и «r», чтобы я мог получить толькоИсходное имя таблицы из данных.(как актер, фильм, прокат).я работаю в питонеПомогите мне, пожалуйста.спасибо

Ответы [ 3 ]

0 голосов
/ 11 апреля 2019
def clean(string):
    p = string.split()
    if len(p) == 1:
        return p[0].split('.')[-1]
    else:
        return p[0]
0 голосов
/ 11 апреля 2019

Вам известен набор ожидаемых возможных имен таблиц базы данных?Похоже, вы бы или могли запросить его из базы данных.Если это так:

database_tables = ['actor', 'film', 'rental', 'inventory', 'customer']
results = []
for db_list in data:
    db_list = [db for db in database_tables if db in ''.join(db_list)]
    results.append(db_list)

Если вы этого не сделаете, ваше решение будет столь же хорошим, как и предсказуемость поступающих данных для очистки.С набором у вас есть:

result = []
for db_list in data:
    db_list = [db.split('public.')[0] for db in db_list]
    db_list = [db.split(' ')[0] for db in db_list]
    result.append(db_list)
0 голосов
/ 11 апреля 2019

Если ваши единственные дела - удалить public. и as x из ваших входов, вы можете использовать

re.sub("(public\.|\sas.+)", "", input_string)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...