我正在使用MS SQL Server Management Studio,我有一个包含以下数据的简单表:
CountryId CommonName FormalName
--------- ---------- ----------
1 Afghanistan Islamic State of Afghanistan
2 Albania Republic of Albania
3 Algeria People's Democratic Republic of Algeria
4 Andorra Principality of Andorra
我使用“将结果另存为”使用默认的UTF8编码将此数据保存到countries.csv
。然后我进入iPython并使用pandas将其读入数据框:
df = pd.read_csv("countries.csv")
如果我这样做
df.columns
我明白了:
Index([u'CountryId', u'CommonName', u'FormalName'], dtype='object')
奇怪的是,当我复制列名称时,将其粘贴到一个新单元格中,然后按Enter键,我得到:
u'\ufeffCountryId', u'CommonName', u'FormalName'
unicode字符\ufeff
显示在第一列名称的开头。
我尝试了不同表格的程序,每次我得到额外的字符。它只发生在第一个列名称上。
有人可以向我解释为什么会出现额外的unicode角色吗?
答案 0 :(得分:3)
尝试将encoding = "utf-8-sig"
选项与read_csv
一起使用。例如:
df = pd.read_csv("countries.csv", encoding = "utf-8-sig")
这应该让它忽略CSV文件开头的Unicode字节顺序标记(BOM)。这里不需要使用BOM作为UTF-8文件没有字节顺序,但Microsoft工具喜欢用它作为幻数来识别UTF-8编码的文本文件。