regex 如何删除数据框中的转录的第一个字符串部分?

uurv41yg  于 2023-06-07  发布在  其他
关注(0)|答案(2)|浏览(143)

我在一个大的日期框架中得到了一个成绩单列,我想从成绩单的开头删除/删除无用的消息,如果用户输入的话,比如hi或hello。
成绩单示例:
“用户:您好\n机器人:你好。\用户:订单状态。\n机器人:您的订单状态是您的订单选项卡。\n用户:代表。”
“用户:代理。\n机器人:等待时间比平时长”
输出应删除转录中无用的部分,包括bot响应,并获得以下输出:
“用户:订单状态。\n机器人:您的订单状态是您的订单选项卡。\n用户:代表。”
“用户:代理。\n机器人:等待时间比平时长”
第二个记录保持不变,因为它没有Hi或hello。
这是我到目前为止所拥有的:

df['Transcript'].str.split('\User').str.contains('hi|hello')
ecr0jaav

ecr0jaav1#

可能的解决方案:

out = df['col'].str.replace(':', r':\User *').str.split(r':').explode()
(out[~(out.str.contains('Hello|Hi') | out.eq('User '))].str.replace(r'*', ':')
 .groupby(level=0).sum()
 .str.replace(r' \User :', ':'))

输出:

0    \User : Order status.\nBot: Your order status ...
1    \User : Agent please.\nBot: Waiting time is lo...
Name: col, dtype: object
twh00eeo

twh00eeo2#

首先,您可以将消息的拆分保存到一个var中,并使用正则表达式来完成这项工作。
所以使用纯Python,你可以尝试这样做:

messages = [
    'hello, bot',
    'How are you going?',
    'Are you here?',
    'i want know about my order status'
]
ignored = 'hello|how are you?|are you here?'
output = []

for msg in messages:
    if not re.match(ignored, msg.lower()):
        output.append(msg)

print(output)

输出应为:

['i want know about my order status']

相关问题