猿问

更改命令的输入顺序

在一系列中搜索模式很容易,但我必须使用它apply来查找列是否以另一列的内容结尾。顺便说一句,我不得不稍微更改您的数据,因为除非要忽略空格'...suite101','suite 101'否则不会以结尾。所以我使用了:


d = pd.DataFrame({'street1': ['1000 foo dr', '1001 bar dr', '1002 foo dr suite 101', '1003 bar dr'],

                  'street2': ['city_a', np.nan, 'suite 101', 'suite 102'],

                  'city': ['city_a', 'city_b', np.nan, 'city_c']})


print(pd.DataFrame({'Address': np.where(d.street2.str.contains('city', na=True)

               | d.apply(lambda x: x.street1.endswith(str(x.street2)), axis = 1),

               d.street1,

               d.street1.str.cat(d.street2, sep=' '))}))

按预期给出:


                 Address

0            1000 foo dr

1            1001 bar dr

2  1002 foo dr suite 101

3  1003 bar dr suite 102我正在尝试编写一个简单的机器人,它允许我通过键入这样的命令来更改人名


.name @Someone new_nickname 

目前我已经写了这个功能


@client.command(process_context=True)

async def name(ctx, *, member: discord.Member):

    print('{}'.format(member))

    await client.change_nickname(member, 'new_name')

但是,现在调用此命令的唯一方法是将新昵称放在被标记的人之前,如下所示:


.name new_nickname @Someone

所以我的问题是,我该如何编写这个函数,让我先标记这个人,然后再写昵称?


青春有我
浏览 181回答 1
1回答

幕布斯7119047

是pass_context,不是process_context。您只需要将member参数放在新名称的仅关键字参数之前:@client.command(pass_context=True)async def name(ctx, member: discord.Member, *, new_name):    await client.change_nickname(member, new_name)
随时随地看视频慕课网APP

相关分类

Python
我要回答