Python中CSV文件的编码错误
Posted
技术标签:
【中文标题】Python中CSV文件的编码错误【英文标题】:Wrong encoding on CSV file in Python 【发布时间】:2021-08-10 18:53:35 【问题描述】:我不确定我是否正确地提出了这个问题,但这是我的问题:
我有一个 .csv 文件 (InjectionWells.csv),我需要根据逗号将其拆分为列。当我这样做时,它只是不起作用,我只能认为可能是一种编码,但我不知道如何修复它。有人能解释一下吗?
以下是实际文件的几行:
API#,Operator,Operator ID,WellType,WellName,WellNumber,OrderNumbers,Approval Date,County,Sec,Twp,Rng,QQQQ,LAT,LONG,PSI,BBLS,ZONE,,,
3500300026,PHOENIX PETROCORP INC,19499,2R,SE EUREKA UNIT-TUCKER #1,21,133856,9/6/1977,ALFALFA,13,28N,10W,C-SE SE,36.9003240,-98.2182600,” 2,500",300,切诺基,,,
3500300163,CHAMPLIN EXPLORATION INC,4030,2R,CHRISTENSEN,1,470258,11/27/2002,ALFALFA,21,28N,09W,C-NW NW,36.8966360,-98.1777200,"2,400","1,000" ,红叉,,,
3500320786,LINN OPERATING INC,22182,2R,NE CHEROKEE UNIT,85,329426,8/19/1988,ALFALFA,24,27N,11W,SE NE,36.8061130,-98.3258400,"1,050","1,000" ,红叉,,,
3500321074,SANDRIDGE 勘探与生产有限责任公司,22281,2R,VELMA,2-19,281652,7/11/1985,ALFALFA,19,28N,10W,SW NE NE SW,36.8885890,-98.3185300,"3,152" ,"1,000",红叉,,,
我已经尝试了这两种方法,但没有一种可以工作:
1.
import pandas as pd
df=pd.read_csv('InjectionWells.csv', sep=',')
print(df)
import pandas as pd
test_data2=pd.read_csv('InjectionWells.csv', sep=',', encoding='utf-8')
test_data2.head()
【问题讨论】:
如果不破坏机密性,显示几行实际 csv 可能会有所帮助。 我包含了指向 CSV 文件的链接,但您是对的,也许显示一些行会更容易理解,但仍然有很多列,我觉得可能包含太多但现在您可以看到。 我无法使用提供的链接中的文件重现您的问题。无论有没有sep
参数,它都能很好地加载。可能是您的环境有问题。您是否可能不小心尝试加载压缩文件?你使用的是什么版本的 Pandas 和 Python?
我还能够使用您提供的数据和代码正确加载 CSV。
@jrbergen 我只加载 CSV 文件而不压缩,我使用的是 Python 3.8 版本和 pandas 1.1.3
【参考方案1】:
由于您的 csv 文件还包含一些非 ascii 字符,因此您需要传递不同的编码。 utf-8 无法处理。
我试过了,它工作正常:-
import pandas as pd
test_data2=pd.read_csv('InjectionWells.csv', sep=',', encoding='ISO-8859-1')
print(test_data2)
请在 cmets 中寻求帮助
很乐意提供帮助!!!
【讨论】:
这可能是问题所在,但如果不传递encoding='utf-8'
,文件会在此处正常加载,可能会将包含非 utf8 兼容字符的条目替换为 NaN。但这并不能解释他的第一个示例不加载数据框。
那是因为当通过pandas.read_csv()读取时没有传递编码,默认编码为None,errors="replace"表示如果pandas不能编码任何东西那么它就会简单地将其命名为 Nan 并且不会失败。请参考:- pandas.pydata.org/docs/reference/api/pandas.read_csv.html
您好,感谢您的帮助。我尝试了您的建议,但没有解决问题。我尝试再次从原始源下载文件并将其替换为旧文件并工作。也许我用 Python 做的一些事情影响了文件。这次我发布了一个链接,其中包含我正在处理的确切 CSV 文件 (drive.google.com/file/d/1F79iKrXQTLGIaiRhdl5GXtqPMpcqcoAP/…) 并出现错误,以查看是否有人可以澄清我遇到此问题的原因。
让我看看
@Alok Raj 完全正确;这就是我想说的。因此,仅显示 NaN
s 的 OP 示例没有意义,因为在不传递编码的情况下加载相同的文件时我没有看到。 @Ricardo Ortega 很高兴它现在可以工作了,也许你的文件在弄乱它的时候已经损坏了。以上是关于Python中CSV文件的编码错误的主要内容,如果未能解决你的问题,请参考以下文章
Python MySQL CSV 导出到 json 奇怪的编码
pandas读取csv文件发生编码(encoding)错误:获取文件编码格式之后再读取文件