我有一个包含一百万行左右的CSV文件,其中一些行与某些字符混合在一起(这意味着该行可以读取,但与鲍尼混合在一起):
ªïÜܵ+>&\ôowó¨ñø4(½;!|Nòdd¼Õõ¿¨W[¦¡¿p\,¶êÕMÜÙ;!ÂeãYÃ3S®´øÂÃ
输入文件为ISO-8859-1,每行过滤并写入utf-8新文件中。
可以过滤掉吗?以及如何?
这是它的样子(整行)
Foo;Bar;24/01/2019-13:06;24/01/2019-12:55.01;;!
ù:#ªïÜܵ+>&\ôowó¨ñø4(½;!|Nòdd¼Õõ¿¨W[¦¡¿p\,¶êÕMÜÙ;!
ÂeãYÃ3ÃS®´øÂÃç~ÂÂÂÂÃýì¯ãm;!ÃvÂ
´Ã¼ÂÂ9¬u»/"ÂFÃ|b`ÃÃõà ±ÃÃÂ8ÃÂ;Baz
这就是我的阅读方式。 fileObject的编码为ISO-8859-1
def tee(self, rules=None):
_good = open(self.good, "a")
_bad = open(self.bad, "a")
with open(self.temp, encoding=rules["encoding"]) as fileobject:
cpt = 0
_csv = csv.reader(fileobject, **self.dialect)
for row in _csv:
_len = len(row)
_reconstructed = ";".join(row)
self.count['original'] += 1
if _len == rules["columns"]:
_good.write("{}\n".format(_reconstructed))
else:
_bad.write("{}\n".format(_reconstructed))
# print("[{}] {}:{}{}{}".format(_len, cpt, fg("red"), _reconstructed, attr("reset")))
self.count['errors'] += 1
cpt += 1
_good.close()
_bad.close()