Python:含制表符的字符串插入列表后显示\t而非空格的解决方法
解决Python列表打印时制表符显式显示的问题
问题原因
直接打印列表时,Python会调用元素的repr()方法,这个方法会输出字符串的原始编码形式,把转义字符(比如\t)原样显示出来;而单独打印字符串时用的是str()方法,会把\t解析成实际的制表符空格,所以两种输出表现不一样。
解决办法
方法1:遍历列表逐个打印元素
直接循环打印列表里的每个元素,这样每个元素会用str()解析,制表符会正常显示为空格:
str1 = "new_service_group" src_grp = "servicegroups\t\t\t\t" + str1 print("src_grp is = " + src_grp) array = [ 'define service{', 'host_name host-a1p', 'service_description Disk Space /var', 'use ch_rating_system', '}' ] array.insert(len(array) - 1, src_grp) # 遍历打印每个元素 for item in array: print(item)
输出结果:
src_grp is = servicegroups new_service_group define service{ host_name host-a1p service_description Disk Space /var use ch_rating_system servicegroups new_service_group }
方法2:自定义列表输出格式
如果想要输出类似列表的结构但解析制表符,可以手动拼接字符串:
# 输出带引号的列表格式,制表符正常显示 print('[{}]'.format(', '.join(f'"{item}"' for item in array)))
输出:
["define service{", "host_name host-a1p", "service_description Disk Space /var", "use ch_rating_system", "servicegroups new_service_group", "}"]
方法3:替换制表符为实际空格
提前把字符串里的\t替换成对应数量的空格(注意终端中制表符默认宽度是8,可根据需求调整):
src_grp = "servicegroups" + " " * 4 + str1 # 用4个连续空格代替4个制表符
内容的提问来源于stack exchange,提问作者Praveen Jaikumar
相关产品推荐
相关产品推荐

