【发布时间】:2021-05-21 12:26:15
【问题描述】:
我是一名从事数据科学项目的学生,我需要从我的数据框的一列中提取一部分。 数据框如下所示: column.
我想从“HOTHOTVIDEOHOT0501005107FilmVidéoClub”之类的字符串中提取部分 HOTHOTVIDEO
所以我使用这样的正则表达式编写了这条指令:
facturation['annotation']=facturation['annotation'].str.findall('([A-Z0-9]{3}\d+)').apply(''.join)
它提取所有正确的东西,除了有时我有这样的字符串:“CTVCANALVODCTV0200052670CTV0200052670”,它返回CTV0200052670CTV0200052670,但只想要第一次出现:Like this
有人可以帮我解决这个问题吗:)
【问题讨论】:
-
这无关,不过,@okpython。该问题的原因是正则表达式模式本身。这样做的原因是在该模式上所做的工作。
-
那你为什么用
findall呢?使用extract、.str.extract(r'([A-Z0-9]{3}\d+)') -
我已经尝试过使用
extract,它解决了这个问题,但它导致了另一个问题。也就是说,它只能从 MFEMETROPOLITANMFE05UH622455AlaskaHD 等字符串中提取 MFE05。这就是我使用findall的原因,因为它会返回所有匹配项。 :( -
str.extract(r'([A-Z]{1,3}\d{3,})')怎么样?还是str.extract(r'([A-Z]{2,3}\d{3,})')?
标签: python regex pandas data-science extract