带 BOM 的 CSV 文件
带 BOM (Byte Order Mark) 的 CSV 文件是在文件开头包含一个特殊的标记 \ufeff,用于指示文本的字节顺序和编码类型。BOM 通常用于 UTF-8 编码的文件,尤其是从某些文本编辑器或工具生成的文件。
去掉 BOM 并生成一个新的文件
以下是一个完整的示例代码,展示如何读取带 BOM 的 CSV 文件,去掉 BOM,然后生成一个不带 BOM 的新的 CSV 文件:
示例代码
import csv
def remove_bom_from_csv(input_filename, output_filename):
# 读取原始文件内容,使用 utf-8-sig 编码去掉 BOM
with open(input_filename, mode='r', encoding='utf-8-sig') as infile:
csv_reader = csv.reader(infile)
headers = next(csv_reader)
rows = list(csv_reader)
# 将内容写入新文件,使用 utf-8 编码,不带 BOM
with open(output_filename, mode='w', encoding='utf-8', newline='') as outfile:
csv_writer = csv.writer(outfile)
csv_writer.writerow(headers)
csv_writer.writerows(rows)
# 示例调用
input_filename = 'zhijian.csv' # 输入的带 BOM 的 CSV 文件名
output_filename = 'zhijian_no_bom.csv' # 输出的不带 BOM 的 CSV 文件名
remove_bom_from_csv(input_filename, output_filename)
代码解释
-
读取带 BOM 的文件:
- 使用
utf-8-sig编码打开文件,这样 Python 会自动识别并去除文件开头的 BOM。 - 读取文件头部(headers)和内容(rows)。
- 使用
-
写入不带 BOM 的新文件:
- 使用
utf-8编码打开新文件,确保写入的新文件不包含 BOM。 - 将读取到的头部和内容写入新文件。
- 使用
运行示例
- 将上述代码保存为一个 Python 脚本文件(例如
remove_bom.py)。 - 确保你的当前目录中有一个名为
zhijian.csv的带 BOM 的 CSV 文件。 - 运行 Python 脚本:
python remove_bom.py
这样,脚本会读取 zhijian.csv 文件,去掉 BOM 并生成一个名为 zhijian_no_bom.csv 的新文件。新文件将不包含 BOM。
2728

被折叠的 条评论
为什么被折叠?



