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

2024-04-25 14:52:48 发布

您现在位置: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

Tags: 字符串partyresall字符threaded括号about
2条回答

有帮助吗?你知道吗

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

正如在评论中指出的,您也可以直接使用^{}

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))

相关问题 更多 >

    热门问题