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

2024-09-28 01:24:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python数据帧,其中有一个字符串列,我想将其拆分为多个列。在

DF的某些行如下所示:

COLUMN

ORDP//NAME/iwantthispart/REMI/MORE TEXT
/REMI/SOMEMORETEXT
/ORDP//NAME/iwantthispart/ADDR/SOMEADRESS
/BENM//NAME/iwantthispart/REMI/SOMEMORETEXT

所以基本上我希望所有的东西都在'/NAME/'之后,直到下一个'/'。然而。并非每一行都有'/NAME/iwantthispart/'字段,如第二行所示。在

我试过使用拆分函数,但结果是错误的。在

^{pr2}$

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

有人有什么建议或解决办法吗?非常感谢您的帮助!(项目符号是为了使其更具可读性,而不是实际在数据中)。在


Tags: 数据函数字符串textnamedfmorecolumn
2条回答

无论第一个单词是否是name,这两行都会给出第二个单词

mt["column"]=mt["column"].str.extract(r"(\w+/\w+/)")
mt["column"].str.extract(r"(\/\w+)")

这将在pandas dataframe中给出以下结果:

^{pr2}$

如果您只对包含名称的行感兴趣,这对您很好:

mt["column"]=mt["column"].str.extract(r"(\NAME/\w+/)")
mt["column"].str.extract(r"(\/\w+)")

这将产生以下结果:

/iwantthispart
/NaN
/iwantthispart
/iwantthispar

您可以使用str.extract提取所选模式,使用正则表达式:

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

或者

^{pr2}$

两者都返回:

0    iwantthispart
1              NaN
2    iwantthispart
3    iwantthispart

相关问题 更多 >

    热门问题