删除lis中对象的字节顺序标记

2024-04-26 07:55:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Python(3.4,在windows7上)下载一组文本文件,当我读(和写,修改后),这些文件似乎有几个字节顺序标记(BOM)保留的值,主要是UTF-8bom。最后,我将每个文本文件作为一个列表(或字符串),我似乎无法删除这些BOM。所以我问是否可以删除BOM?在

对于更多的上下文,文本文件是从一个公共的ftp源下载的,用户可以上传他们自己的文档,因此原始的编码是高度可变的,我不知道。为了让下载无错误地运行,我将编码指定为UTF-8(使用拉丁语-1将产生错误)。所以对我来说,拥有BOM并不是一个谜,我不认为一个预先的编码/解码解决方案可能是我的答案(Convert UTF-8 with BOM to UTF-8 with no BOM in Python)-它实际上似乎使其他BOM的频率增加。在

下载后修改文件时,我使用以下语法:

with open(t, "w", encoding='utf-8') as outfile:
    with open(f, "r", encoding='utf-8') as infile:
        text = infile.read
        #Arguments to make modifications follow

稍后,在“outfiles”作为一个列表读入之后,我看到一些单词具有UTF-8bom,比如\ufeff。我尝试使用以下列表理解删除BOM:

^{pr2}$

虽然这个参数将运行,但不幸的是,当我打印列表时,BOM仍然存在(我相信即使我试图从字符串中删除BOM而不是列表:How to remove this special character?)也会有类似的问题。如果我把一个正常的单词(非BOM)放在列表理解中,这个单词将被替换。在

我知道如果按对象打印列表对象,BOM将不会出现(Special national characters won't .split() in Python)。而BOM不在原始文本文件中。但是我担心这些BOM在以后运行文本分析的参数时会保留,因此任何在列表中显示为\ufeffword而不是{}的对象将被分析为\ufeffword。在

再次,是否可以在事后删除BOM表?在


Tags: 文件to对象字符串in编码列表错误