соответствующее регулярное выражение в списке имен с Python - PullRequest
0 голосов
/ 15 апреля 2020

Я хочу добавить символы перед _ для каждого item в list. Что я мог делать не так?

import re
data_frames = [insuer_df, tax_df, debt_df, death_df, birth_df, will_df]

frames = []
for df in data_frames:
    pattern = re.findall("(w+)\_\[a-z]", str(df))
    frames.append(pattern)
print(frames)
[[], [], [], [], [], []]

Мой ожидаемый результат:

[insuer, tax, debt, death, birth, will]

Ответы [ 2 ]

1 голос
/ 15 апреля 2020

Я не знаю, что не так, но следующий код даст вам желаемый результат

import re
data_frames = ['insuer_df', 'tax_df', 'debt_df', 'death_df', 'birth_df', 'will_df']

frames = []
for df in data_frames:
    j = df[0:df.find('_')]
    frames.append(j)
print(frames)

Упрощайте, любая строка может рассматриваться как массив, поэтому просто найдите начальную позицию '_' и извлеките все до этого.

Надеюсь, это поможет

0 голосов
/ 15 апреля 2020

Вы можете использовать match вместо findall , и в регулярном выражении вы можете создать группу с частью текста, которую необходимо извлечь.

С Метод match, вы получите объект со всеми группами текстов, где: индекс 0 - весь текстовый индекс 1 и далее - текст каждой группы текстов

проверьте код ниже:

import re
data_frames = ['insuer_df', 'tax_df', 'debt_df', 'death_df', 'birth_df', 'will_df']

frames = []
for df in data_frames:
    j = re.match("([^_]*?)_.*", str(df))
    fragment = j.group(1)
    frames.append(fragment)
print(frames)

С уважением,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...