You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何把提取字符串中横杠右侧内容的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:12:04