对于在某些字符串末尾包含 (xyz) 和 [1] 的一列字符串,请在 Python 中删除这些字符

我的 df 列包含在某些字符串末尾的括号和方括号中具有附加字符的字符串,对于这些字符串,我想删除括号、方括号和其中包含的所有字符。


2367            CROSS THREADED 

2368    ALL ABOUT ARBY [5]Res.

2369        EMILIA MEL [5]Res.

2360      DYNA REAVER (NSW)[5]

2362             PARTY MIX [5]

清理后的预期结果


2367            CROSS THREADED 

2368            ALL ABOUT ARBY

2369                EMILIA MEL

2360               DYNA REAVER

2362                 PARTY MIX


holdtom
浏览 190回答 4
4回答

阿波罗的战车

这有帮助吗?import rebefore = "2369        EMILIA MEL [5]Res."after = re.sub(r"\[.*", "", before).strip()print(before)print(after)哪个打印:2369        EMILIA MEL [5]Res.2369        EMILIA MEL更新根据您的评论,您希望删除[或(删除所有内容:import rebefore = [    "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这是一个如何在 a 上使用它的示例pandas.DataFrame:import pandas as pdimport redf = 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           after0          CROSS THREADED  CROSS THREADED1  ALL ABOUT ARBY [5]Res.  ALL ABOUT ARBY2      EMILIA MEL [5]Res.      EMILIA MEL3    DYNA REAVER (NSW)[5]     DYNA REAVER4           PARTY MIX [5]       PARTY MIX更新 3正如评论中指出的那样,您也可以pandas.Series.str.replace直接使用:df["after"] = df["before"].str.replace(r"( )*(\(|\[).*", "")

鸿蒙传说

这可能对你有帮助。def trim(string):    string = string.split('(')[0]    string = string.split('[')[0]    return string.strip()df['CROSS THREADED'] = df['CROSS THREADED'].apply(lambda row: trim(string=row))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python