У меня довольно сложная проблема, и я подумал, сможет ли кто-нибудь из вас, кто умеет программировать, помочь мне: p
Я хочу использовать два шаблона регулярных выражений, используя одно лямбда-выражение.
Код применяется для столбца панд данных Dataframe.
Мы перебираем все элементы в столбце.Если строка содержит квадратную скобку '[', необходимо выполнить один шаблон регулярного выражения.Если строка не содержит квадратную скобку, необходимо выполнить другой шаблон регулярного выражения.
Два рабочих шаблона регулярных выражений можно найти ниже.
На данный момент они разделены, но я хочу их объединить.
У меня есть следующий код, который отлично работает:
chunk['http'] = chunk.loc[chunk['Protocol'] == 'HTTP', 'Information'].apply(
lambda x: re.sub(r'\b[^A-Z\s]+\b', '', x))
chunk['http'] = chunk.loc[chunk['Protocol'] == 'HTTP', 'Information'].apply(
lambda x: re.sub(r'\[(.*?)\]', '', x))
Первое выражение сохраняет только значения в CAPS.Второе выражение хранит значения только в квадратных скобках.
Я попытался объединить их в следующем фрагменте кода:
chunk['http'] = chunk.loc[chunk['Protocol'] == 'HTTP', 'Information'].apply(
lambda x: re.sub(r'\b[^A-Z\s]+\b', '', x)) \
if '[' in x == False\
else re.sub(r'\[(.*?)\]', '', x)
Однако это возвращает следующую ошибку:
NameError: free variable 'x' referenced before assignment in enclosing scope