python txt去掉bom头怎么去

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python txt去掉bom头怎么去相关的知识,希望对你有一定的参考价值。

windows自带的文档编辑器会插入一个bom头,如果只有一个txt文件的话,用其他的文档编辑器,比如UE,打开,再另存下去bom的格式就可以了;如果是多个文件,那就把先文件内容全读出来,这样会把bom的数据也读出,找出开头的字符的位置,再用切片方法把数据切出来,这样,就把bom头去掉了。 参考技术A BOM = b'\\xef\\xbb\\xbf'
with open('/path/to/file', 'r+b') as f:
    if BOM == f.read(3):
        content = f.read()
        f.seek(0)
        f.write(content)
        f.truncate()

 兼容python2和python3

安卓按键:读取txt开头出现未知字符的问题

很多时候 我们读取txt 用traceprint输出后 最头上会莫名其妙多出一个问号 但是你用问号匹配他 却匹配不到  就是1个未知字符  这个到底是什么 怎么避免出现这个东西呢

这个主要是txt文件存在一个bom头字符串 但是 安卓状态下 txt却不认识这个字符串 这个bom头在电脑是不可见的 

处理办法

1 使用类似noytepad++之类的编辑工具把txt文件的bom头去掉 然后再把这个txt传到安卓上 开始脚本处理

2 脚本每次读取txt会检测文件内容开始是否存在bom头字符串 存在则替换掉 不存在更好

第一个办法 我就不用演示了 自己去处理下即可

第二个 我是用一个函数来实现处理的  可以参考下

Function 文本文件格式化操作(文件路径)
    Dim 读取内容
    读取内容 = Trim(file.Read(文件路径))
 
    //判断开头3个字符是否是bom头
    If Mid(读取内容, 1, 3) = Chr(239) & Chr(187) & Chr(191) Then
        //有则替换为空 然后重新写入内容 这个地方不确定是否除了第一行之外还可能存在bom头 应该没那么巧
        file.Write 文件路径, Replace(读取内容, Chr(239) & Chr(187) & Chr(191), "")
    End If
   
    //如果txt里面最后不是以
结尾的 就自动添加一个回车换行符 来实现这个 也解决了替换最后一行 不写
会替换找不到的情况
    If trim(读取内容)<>""and Right(读取内容, 2) <> "
" Then
        file.Write 文件路径, 读取内容 & "
"
    End If
   
End Function

以上是关于python txt去掉bom头怎么去的主要内容,如果未能解决你的问题,请参考以下文章

去掉文件 BOM 头

python基础:字符编码问题三个不可见的字符(0xEF 0xBB 0xBF,即BOM)

php去掉文件UTF-8的BOM头

安卓按键:读取txt开头出现未知字符的问题

批量去BOM头 遍历目录及子文件,文件夹 PHP源码

求个给UTF-8文件批量去UTF-8 BOM头的批处理,去掉BOM后覆盖原来的文件,最好我可以自己添加多个文件名称!