python - 匹配直到第一次出现

标签 python regex pandas

我的 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

我希望摆脱IMG 之前的所有垃圾。但是,当我执行以下字符串替换时,它会替换 IMG 周围的所有内容,包括 IMG 文件夹前后的内容。

In [7]: df.head().center.str.replace(r'[^IMG]+?','')
Out[7]:
0    IMG
1    IMG
2    IMG
3    IMG
4    IMG
Name: center, dtype: object

我假设放置 ? 会阻止它在第一次出现 IMG 之后进行搜索,但事实并非如此,如上所示。

执行上述正则表达式的正确方法是什么?

最佳答案

虽然我更喜欢正则表达式,但我更喜欢 split 的另一种方法,即

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

输出:

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

Or Thanks @Zero

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

关于python - 匹配直到第一次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46386432/

相关文章:

python - 获取多个日期时间对的日期范围

python - GridseachCV - 值错误 : Found input variables with inconsistent numbers of samples: [33 1]

python - 使用python获取Redis数据库中的所有键

javascript - 使用正则表达式查找链接中尚未存在的字符串

regex - 带括号的电话号码的 HTML5 模式

javascript - 如何从 JavaScript 中的字符串中获取所有数字?

Python - 按月汇总并计算平均值

python - 将预测结果合并到原始数据帧?

python - 导入后的 For 循环在 Python 单行中不起作用

要提取的 Python CSV 特定行