看似简单的python截取文本问题,同事们都不会,最后高手巧妙解决

我是数据外星人 2024-02-21 01:20:19

今天早早回到公司,一直想着昨晚自己遇到的一个小问题。现在有一个 sql 文本语句:

怎么提取第一个 select 里面用到的字段名,比如上面的结果应该是 a,b,c 。

传闻都说,高手都经常迟到。还没到上班时间,几个刚毕业的实习生看到我遇到的难题。他们跃跃欲试,其中一位女生就说,这题简单,我会。快速就写下了如下解法:

还真可以得到正确结果。不过,哪有这么简单的事情。我接着告诉她,还有这种情况:

这种情况,我只需要 x ,当然,这不应该难倒她,很快她给出答案:

看得出来她很喜欢 split ~!

当我给出下一个例子后,她终于投降了:

原来,sql 语句也可能在字段上套函数。上面的解法只是用逗号分隔,结果被函数中的逗号给搞混了。

此时已经好几个人围过来进行激烈讨论。没过多久,传说中那个"姗姗来迟的高手"终于回到公司。接下来看他表演了。

比 chat gpt 管用?

高手看了一下问题,有了前面"菜鸟"的教训,他马上意识到,这不是一个普通情况的问题,这根本就是一个针对 sql 的问题。二话不说,坐到自己的电脑前,快速敲了几下。当众人以为他在 chat gpt 那里问到结果的时候,他却说:“看,这不就找到一个专门解析 sql 的 python 库了吗”。

pip 安装一下,复制粘贴示例代码。

最后这个库也靠不住,就不贴 pip 了

好家伙,根本不符合要求!

原来,这个库还把别名单独解析出来:

替换一下,搞定

高手嘴角微微一笑,感觉胜券在握的时候,突然发现有一个测试案例失败了。

没想到,就这种简单嵌套查询,这个库就报错了。

此时,高手终于开始认真对待事情了。

正负得零

高手一语道破天机:"其实一开始用 split 的思路是可以的,但是你们太依赖内置的 split ,难道自己就不可以实现一个特殊情况的 split 吗?"

谁能想到,他打算自己实现 split。看看"高手"的解法:

行4:这个变量至关重要,相当于一个计数器行10-17:遇到左括号,计算器+1,遇到右括号,计算器-1行19:当计算器为0,此时遇到一个逗号,那就是真正需要分隔的时候

很想知道,如果问 chat gpt,它能给出正确结果吗?

我还是觉得有其他的实现方式,你能想到吗?

不要忘记一键三连。你的点赞、收藏、关注,是我创作的动力。

0 阅读:0

我是数据外星人

简介:感谢大家的关注