python读取一个utf-8编码的文件,出现\xef\xbb\xbf

1,061 阅读1分钟

这个看起来是一个编码问题,这个十六进制值 "\xef\xbb\xbf" 是 Unicode BOM (Byte Order Mark)。它通常出现在文件的开头作为一个特殊的字节序列,用于表示文本文件的编码方式。但如果该字节序列出现在文件的中间或末尾,则可能会导致解析错误。

要解决这个问题,可以尝试以下步骤:

  1. 如果出现在文件开头,可以使用文本编辑器或其他工具将其删除。
  2. 确保文件的编码方式与你的程序所期望的编码方式一致。例如,如果你的程序期望读取 UTF-8 编码的文件,则应确保文件以 UTF-8 编码保存。
  3. 如果文件中包含多种编码方式的文本,可以使用相关工具将其转换为单一编码方式。

代码处理

python 2处理

import csv

with open('file.csv', 'rb') as csvfile:
    content = csvfile.read()
    csvfile.close()

with open('file.csv', 'wb') as csvfile:
    csvfile.write(content.replace('\xef\xbb\xbf', ''))
    csvfile.close()

with open('file.csv', 'rU') as csvfile:
    reader = csv.reader(csvfile)
    for row in reader:
        # 处理每一行的数据

python 3 出现

with open('file.csv', newline='', encoding='utf-8-sig') as csvfile:
    reader = csv.reader(csvfile)
    for row in reader:
	# 处理每一行的数据