我正在使用Python 2.7.12。使用此代码段,我保存了utf-8
csv文件。我在文件的开头写了BOM(字节顺序标记)。
import codecs
import csv
outputFile = open("test.csv", "wb")
outputFile.write(codecs.BOM_UTF8)
fieldnames = ["a", "b"]
writer = csv.DictWriter(outputFile, fieldnames, delimiter=";")
writer.writeheader()
row = dict([])
for i in range(10):
row["a"] = str(i).encode("utf-8")
row["b"] = str(i*2).encode("utf-8")
writer.writerow(row)
outputFile.close()
我想加载该csv文件:
import codecs
import csv
inputFile = open("test.csv", "rb")
reader = csv.DictReader(inputFile, delimiter=";")
for row in reader:
print row["a"]
inputFile.close()
上面的代码将失败:KeyError: 'a'
如果我打印行键,则其外观如下:[u'\ufeffa', u'b']
。BOM已嵌入到密钥中a
。我究竟做错了什么?
您必须公开告诉您这是带有BOM的UTF-8。我知道可以与io.open一起使用:
import io
.
.
.
inputFile = io.open("test.csv", "r", encoding='utf-8-sig')
.
.
.
并且您必须以文本模式“ r”而不是“ rb”打开文件。
我正在使用Python 2.7.12。通过这个代码片段,我保存了一个utf-8CSV文件。我在文件的开头写下了BOM(字节顺序标记)。 我想加载csv文件: 上面的代码将失败:如果我打印行键,它们的外观就是这样:。BOM表已嵌入到键中。我做错了什么?
问题内容: 我正在尝试将嵌套的字典写入.csv文件。这是一个简单的示例: 这使我得到一个包含两列的表:第一个包含; 第二个包含[2,1,1](或子词典中的相应值)。我想要一个有四列的表:一列对应的列表元素,然后三列对应的列表元素。 问题答案: 更改: 至: 否则,您会尝试向csv编写类似的内容,而您的意思是。 如Padraic所述,您可能希望更改为或避免随机行为。
因此,我计划使用Jupyter笔记本(Python 3)进行一些数据分析,出于协作的原因,我想将数据存储在github存储库中,但是数据集是敏感的。 因此,我希望将数据(当前为.csv)作为加密文件存储在repo上,然后在运行时对其进行解密(我猜是使用密码提示)。 最好的方法是什么?
有人能帮我找出我做错了什么吗?我正在编写一个python shell脚本,它接受一个ldif文件和一个csv文件,然后将csv文件中的内容附加到ldif中每个记录的末尾。比如: 示例CSV: 样品本地设计院(ldif): 在pythonmyscript.py"sample.ldif""sample.csv"之后 到目前为止,我的代码可以编译,但不能正确修改文件。我正在创建一个对象,该对象在创建时采
我有一个长长的列表,列表的形式如下--- i、 列表中的值有不同的类型——float、int、string。如何将其写入csv文件,使输出的csv文件看起来像
我有一个csv文件,有几百行和13列。csv文件的结构如下(示例): 一个标题的值显示在另一个标题下。因此,当我使用read_csv时,我得到ParserError:Error标记化数据。C错误:第27458行预期有12个字段,saw 13。 关于如何清理/重新排列csv文件并将正确的列值放在正确的列下,有什么建议吗?可能创建一个新的csv或将其输入数据库。谢谢