Помогает ли это?
import re
before = "2369 EMILIA MEL [5]Res."
after = re.sub(r"\[.*", "", before).strip()
print(before)
print(after)
Какие отпечатки:
2369 EMILIA MEL [5]Res.
2369 EMILIA MEL
Обновление
С вашим комментарием, что выхотите все после [
или (
удалить:
import re
before = [
"2369 EMILIA MEL [5]Res.",
"2360 DYNA REAVER (NSW)[5]"
]
after = [re.sub(r"(\(|\[).*", "", b).strip() for b in before]
print(before)
print(after)
Какие отпечатки:
['2369 EMILIA MEL [5]Res.', '2360 DYNA REAVER (NSW)[5]']
['2369 EMILIA MEL', '2360 DYNA REAVER']
Обновление 2
Вот пример, как использовать его на pandas.DataFrame
:
import pandas as pd
import re
df = pd.DataFrame({"before": [
"CROSS THREADED",
"ALL ABOUT ARBY [5]Res.",
"EMILIA MEL [5]Res.",
"DYNA REAVER (NSW)[5]",
"PARTY MIX [5]",
]})
df["after"] = df["before"].apply(
lambda s: re.sub(r"(\(|\[).*", "", s).strip())
print(df)
, который печатает:
before after
0 CROSS THREADED CROSS THREADED
1 ALL ABOUT ARBY [5]Res. ALL ABOUT ARBY
2 EMILIA MEL [5]Res. EMILIA MEL
3 DYNA REAVER (NSW)[5] DYNA REAVER
4 PARTY MIX [5] PARTY MIX
Обновление 3
Как отмечается в комментариях, вы также можете использовать pandas.Series.str.replace
напрямую:
df["after"] = df["before"].str.replace(r"( )*(\(|\[).*", "")