gpt4 book ai didi

Python正则表达式替换列中特定正则表达式之后出现的部分字符串

转载 作者:行者123 更新时间:2023-12-01 08:49:30 25 4
gpt4 key购买 nike

我只想删除出现的 V、I 或 VI,仅当它位于括号内时,如下所示:

输入:

VINE(PCI); BLUE(PI)
BLACK(CVI)
CINE(PCVI)

所需输出:

VINE(PC); BLUE(P)
BLACK(C)
CINE(PC)

当我使用df['col'].str.replace('[PC]+([VI]+)', "")时它取代了括号内的所有内容。当我只使用df['col'].str.replace('[VI]+', "")时它当然不起作用,因为它会删除所有其他出现的 V 和 I。括号内只有这 4 个字母,是 PC 和 VI 之一(或两者)的任意组合。我在这里做错了什么?

谢谢

最佳答案

str.replace 与捕获组和回调一起使用:

import re
df['col'] = df['col'].str.replace(
r'\((.*?)\)', lambda x: re.sub('[VI]', '', f'({x.group(1)})'))

或者,

df['col'] = df['col'].str.replace(r'\((P|PC|C)[VI]+\)',r'(\1)') # Credit, OP
print(df)
col
0 VINE(PC); BLUE(P)
1 BLACK(C)
2 CINE(PC)

关于Python正则表达式替换列中特定正则表达式之后出现的部分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53183155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com