只匹配到第一次出现

2024-06-16 14:08:17 发布

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

我的pandas dataframe列center如下所示:

In [6]: df.center.head()
Out[6]:
0    /Users/sachin/uniwork/IMG/center_2017_09_17_20...
1    /Users/sachin/uniwork/IMG/center_2017_09_17_20...
2    /Users/sachin/uniwork/IMG/center_2017_09_17_20...
3    /Users/sachin/uniwork/IMG/center_2017_09_17_20...
4    /Users/sachin/uniwork/IMG/center_2017_09_17_20...
Name: center, dtype: object

{cd2>我希望把所有的垃圾处理掉。但是,当我做下面的字符串替换时,它会替换IMG文件夹前后的所有内容。在

^{pr2}$

我假设放?会在IMG第一次出现之后停止搜索,但这肯定不是上面看到的情况。在

做上述正则表达式的正确方法是什么?在


Tags: nameindataframepandasdfimgobjectout
2条回答

另一种方法是借助split,但我更喜欢regex,即

df.center.apply(lambda x : '/IMG'+x.split('IMG')[-1])

输出:

^{pr2}$

或者谢谢@0

'/IMG' + df.center.str.rsplit('/IMG', 1).str[1]

使用'.*(?=IMG/)'-匹配字符串中最后一个IMG/之前的所有内容。在

In [3165]: df.center.str.replace('.*(?=IMG/)', '')
Out[3165]:
0    IMG/center_2017_09_17_20...
1    IMG/center_2017_09_17_20...
2    IMG/center_2017_09_17_20...
3    IMG/center_2017_09_17_20...
4    IMG/center_2017_09_17_20...
Name: center, dtype: object

.*-匹配所有内容 (?=IMG/)-直到遇到模式IMG/捕获忽略模式的组,即IMG。稍后替换捕获的组。在

相关问题 更多 >