使用vscode编辑代码时,tab键处理不当引发的问题
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
苏南大叔非常喜欢使用vscode
来编辑代码,但是最近使用vscode
编辑代码的时候,却出了个非常容易被忽略的小bug
。本文,就说说由于使用了vscode
编辑器,而引发的一个很难察觉的bug。
本文测试环境:win10
,python@3.6.8
,vscode@1.64.2
。大家好,这里是苏南大叔的博客“程序如此灵动”,本文描述的问题是:“由tab键自动转义引起的惊天bug大案”。
问题描述
本文中的代码是python
的,不过使用vscode
编辑其它语言的代码时,估计也会有类似的问题。下面是这个问题的基本事情经过。
苏南大叔正在准备知识图谱的三元组文本资料,三元组文本准备以tab
键做间隔。然后,在代码中,是这样写的:
fo = open("test.txt", "w", encoding='utf-8')
name = "苏南大叔"
university = "北京大学"
line = name + " " + "毕业于" + " " + university + "\n"
fo.writelines( line )
fo.close()
其实就是非常简单的字符串连接。结果,再次使用tab
去分割这些字符串的时候,却发生了诡异的分割错误的现象。这个问题是怎么解决的呢?
请观察下面语句中的连续空格:
line = name + " " + "毕业于" + " " + university + "\n"
这里,苏南大叔是使用键盘左上角的tab
键输入的,然而编辑器却给转换成了四个连续空格,导致后续的分割逻辑错误。
解决方案一(推荐)
其实,问题主要是在输入tab
键的时候,vscode
会自动转换为个4个空格。那么,代码中所表达的使用tab
键表示分隔符。实际上变成了使用4个空格来表达。注意,这个可是vscode
自作主张修改的逻辑,并不是大家的真实想法。
所以这里,解决方案就是,在字符串连接的时候,使用/t
来表达tab
键,而不是使用键盘上的那个tab
键。这样的话,后续逻辑就一切正常了。
上述代码中的关键部分,要改成这样的表达方式:
line = name + "\t" + "毕业于" + "\t" + university + "\n"
解决方案二
或者也可以修改vscode
中,关于tab
键的设定。具体可以参考下面的连接:
相关文章
结束语
这个诡异的问题,琢磨了好一阵,才发现bug的产生原因,是那么的离奇。更多vscode
使用技巧。请点击:
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。