看似简单的python截取文本问题,同事们都不会,最后高手巧
今天早早回到公司,一直想着昨晚自己遇到的一个小问题。现在有一个sql文本语句:
怎么提取第一个select里面用到的字段名,比如上面的结果应该是a,b,c。
传闻都说,高手都经常迟到。还没到上班时间,几个刚毕业的实习生看到我遇到的难题。他们跃跃欲试,其中一位女生就说,这题简单,我会。快速就写下了如下解法:
还真可以得到正确结果。不过,哪有这么简单的事情。我接着告诉她,还有这种情况:
这种情况,我只需要x,当然,这不应该难倒她,很快她给出答案:
看得出来她很喜欢split!
当我给出下一个例子后,她终于投降了:
原来,sql语句也可能在字段上套函数。上面的解法只是用逗号分隔,结果被函数中的逗号给搞混了。
此时已经好几个人围过来进行激烈讨论。没过多久,传说中那个姗姗来迟的高手终于回到公司。接下来看他表演了。比chatgpt管用?
高手看了一下问题,有了前面菜鸟的教训,他马上意识到,这不是一个普通情况的问题,这根本就是一个针对sql的问题。二话不说,坐到自己的电脑前,快速敲了几下。当众人以为他在chatgpt那里问到结果的时候,他却说:看,这不就找到一个专门解析sql的python库了吗。
pip安装一下,复制粘贴示例代码。
最后这个库也靠不住,就不贴pip了
好家伙,根本不符合要求!
原来,这个库还把别名单独解析出来:
替换一下,搞定
高手嘴角微微一笑,感觉胜券在握的时候,突然发现有一个测试案例失败了。
没想到,就这种简单嵌套查询,这个库就报错了。
此时,高手终于开始认真对待事情了。正负得零
高手一语道破天机:其实一开始用split的思路是可以的,但是你们太依赖内置的split,难道自己就不可以实现一个特殊情况的split吗?
谁能想到,他打算自己实现split。看看高手的解法:
行4:这个变量至关重要,相当于一个计数器行1017:遇到左括号,计算器1,遇到右括号,计算器1行19:当计算器为0,此时遇到一个逗号,那就是真正需要分隔的时候
很想知道,如果问chatgpt,它能给出正确结果吗?
我还是觉得有其他的实现方式,你能想到吗?
不要忘记一键三连。你的点赞、收藏、关注,是我创作的动力。