在python中提取2个字符串之间的子字符串

0 python substring pandas

我有一个带有字符串列的 python 数据框,我想将其分成更多列。

DF 的某些行如下所示:

COLUMN

ORDP//NAME/iwantthispart/REMI/MORE TEXT
/REMI/SOMEMORETEXT
/ORDP//NAME/iwantthispart/ADDR/SOMEADRESS
/BENM//NAME/iwantthispart/REMI/SOMEMORETEXT
Run Code Online (Sandbox Code Playgroud)

所以基本上我想要“/NAME/”之后到下一个“/”的所有内容。然而。并非每一行都有“/NAME/iwantthispart/”字段,如第二行所示。

我尝试过使用 split 函数,但最终得到了错误的结果。

mt['COLUMN'].apply(lambda x: x.split('/NAME/')[-1])
Run Code Online (Sandbox Code Playgroud)

这只是给了我 /NAME/ 部分之后的所有内容,并且在没有 /NAME/ 的情况下,它返回了完整的字符串给我。

有人有一些提示或解决方案吗?非常感谢帮助!(项目符号是为了使其更具可读性,实际上并不在数据中)。

sac*_*cuL 5

您可以使用str.extract正则表达式来提取选择的模式:

# Generally, to match all word characters:
df.COLUMN.str.extract('NAME/(\w+)')
Run Code Online (Sandbox Code Playgroud)

或者

# More specifically, to match everything up to the next slash:
df.COLUMN.str.extract('NAME/([^/]*)')
Run Code Online (Sandbox Code Playgroud)

两者都返回:

0    iwantthispart
1              NaN
2    iwantthispart
3    iwantthispart
Run Code Online (Sandbox Code Playgroud)