【发布时间】:2015-12-02 15:10:38
【问题描述】:
我在尝试使用 python 读取 CSV 文件时遇到了障碍。
更新: 如果您只想跳过字符或错误,您可以像这样打开文件:
with open(os.path.join(directory, file), 'r', encoding="utf-8", errors="ignore") as data_file:
到目前为止我已经尝试过了。
for directory, subdirectories, files in os.walk(root_dir):
for file in files:
with open(os.path.join(directory, file), 'r') as data_file:
reader = csv.reader(data_file)
for row in reader:
print (row)
我得到的错误是:
UnicodeEncodeError: 'charmap' codec can't encode characters in position 224-225: character maps to <undefined>
我试过了
with open(os.path.join(directory, file), 'r', encoding="UTF-8") as data_file:
错误:
UnicodeEncodeError: 'charmap' codec can't encode character '\u2026' in position 223: character maps to <undefined>
现在,如果我只是打印 data_file,它会说它们是 cp1252 编码的,但如果我尝试
with open(os.path.join(directory, file), 'r', encoding="cp1252") as data_file:
我得到的错误是:
UnicodeEncodeError: 'charmap' codec can't encode characters in position 224-225: character maps to <undefined>
我也试过推荐的包。
我得到的错误是:
UnicodeEncodeError: 'charmap' codec can't encode characters in position 224-225: character maps to <undefined>
我要解析的行是:
2015-11-28 22:23:58,670805374291832832,479174464,"MarkCrawford15","RT @WhatTheFFacts: The tallest man in the world was Robert Pershing Wadlow of Alton, Illinois. He was slighty over 8 feet 11 inches tall.","None
感谢任何想法或帮助。
【问题讨论】:
-
cp1252,根据谷歌的说法,是一种 Windows 字符编码。你的环境是什么,文件来自哪里?比如你用nano打开csv文件,是不是说它是dos格式的?
-
我不明白你在 nano 中打开文件是什么意思...我在 windows 机器上。
-
哦,好的。我以为您可能使用的是 unix - 我之前在 linux 上解析 DOS 格式的文件时遇到了问题,并认为这可能是一个类似的问题。 Nano 是 Linux 系统上常见的终端文本编辑器。
-
试试
for row in reader: data = [unicode(i,'utf-8') for i in row] print data -
我刚试过我收到错误 UnicodeDecodeError: 'charmap' codec can't decode byte 0x8f in position 127: character maps to