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

如何在Python 2.7中处理文件读取时遇到的ASCII 11垂直制表符Vertical Tab

问题处理方案

ASCII码为11的垂直制表符在Python中可以用转义字符\v直接匹配,你只需要在读取到内容后、执行业务逻辑前,将内容中的\v替换为空格或直接删除即可解决读取中断问题。

你可以直接使用修改后的代码:

import sys
import os
import codecs

v_filename=str(sys.argv[1])

if not os.path.exists(v_filename):
        print('Data file not found'+v_filename)
        sys.exit(1)

v_out_file=str(v_filename)+'_converted'
print(v_out_file)

with codecs.open(v_filename,'r',"utf-8") as file:
        with codecs.open(v_out_file,'w',"utf-8") as v_variable_file:
                linesf=file.readlines()
                # 处理表头的垂直制表符,替换为空格,要删除则把' '换成''
                header_line=str(linesf[0]).replace('\v', ' ')
                tralier_line=str(linesf[-1]).replace('\v', ' ')

                if (header_line[0:17]).strip() == "Accounts1File" :
                        v_variable_file.write((header_line[0:17])+'|'+(header_line[17:20])+'|'+(header_line[20:28])+'|'+(header_line[28:36])+'|'+(header_line[36:44])+'\n')
                else:
                        print("Header identifier not matching")

                file.seek(0)

                for line in file:
                        # 处理每行的垂直制表符,替换为空格,要删除则把' '换成''
                        line = str(line).replace('\v', ' ')
                        v_keyword=str(line[0:17]).strip()
                        if v_keyword == "AcctSummary" :
                                v_variable_file.write(line[0:17]+'|'+line[17:67]+'|'+line[67:117]+'|'+line[117:372]+'|'+line[372:382]+'|'+line[382:412]+'\n')
                        elif v_keyword == "CustSummary" :
                                v_variable_file.write(line[0:17]+'|'+line[17:67]+'|'+line[67:117]+'|'+line[117:132]+'|'+line[132:136]+'\n')
                        elif v_keyword == "ProfileActivity" :
                                v_variable_file.write(line[0:17]+'|'+line[17:57]+'|'+line[57:157]+'|'+line[157:207]+'|'+line[207:226]+'\n')
                        elif v_keyword == "Accounts1File" or v_keyword == "AgentFile":
                                pass
                        else:
                                print("NOT IN SCOPE:"+line)
                                sys.exit(1)

补充说明

  • 替换规则可根据需求调整:要直接删除垂直制表符,将代码中replace('\v', ' ')的第二个参数改为空字符串''即可
  • 该处理逻辑完全兼容Python 2.7版本,不会影响原有业务的字段截取逻辑

内容的提问来源于stack exchange,提问作者Sidd

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 18:06:03