如何把提取字符串中横杠右侧内容的SQL代码转为Python实现?
解决SQL转Python:提取横杠右侧内容的问题
我来帮你搞定这个转换!首先得明确你的SQL代码逻辑:它其实是在提取字符串最后一个横杠(-)右侧的所有内容——通过反转字符串找到第一个-,截取后再反转回来,本质就是定位到原字符串里最后一个-的位置,取后面的内容。
你之前的Python代码用re.findall("-", Task)只会返回所有的-,当然达不到目的,下面给你几种靠谱的实现方式:
方法1:字符串分割(最简单直观)
用rsplit从右侧只分割一次,直接拿到最后一个-后面的部分,再用strip()去掉多余空格:
task = 'Making this course amazing - 3h' # 从右侧按'-'分割1次,取分割后的第二部分,再去除首尾空格 result = task.rsplit('-', 1)[1].strip() print(result) # 输出: 3h
这种方法不需要引入额外模块,代码简洁,处理这种场景效率最高。
方法2:正则表达式实现
如果你倾向用正则,可以写一个匹配最后一个-之后内容的表达式:
import re task = 'Making this course amazing - 3h' # 匹配最后一个'-'后面的所有内容,捕获后处理空格 match_result = re.search(r'-(\s*.*)$', task) if match_result: result = match_result.group(1).strip() print(result) # 输出: 3h
正则里-(\s*.*)$的意思是:匹配字符串结尾前的-,捕获后面的所有字符(包括开头的空格),最后用strip()清理掉多余空格。
方法3:完全复刻SQL逻辑
如果你想和原SQL的逻辑完全对齐,也可以用字符串反转的方式实现:
task = 'Making this course amazing - 3h' # 1. 反转字符串(对应SQL的REVERSE) reversed_task = task[::-1] # 2. 找到反转后第一个'-'的位置(对应SQL的charindex) dash_position = reversed_task.find('-') # 3. 截取反转字符串中从开头到'-'前一位的部分,再反转回来 result = reversed_task[:dash_position - 1][::-1].strip() print(result) # 输出: 3h
以上三种方法都能得到你想要的结果,推荐优先用方法1,简单高效!
内容的提问来源于stack exchange,提问作者SaCvP
相关产品推荐
相关产品推荐

