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