我正在尝试将TSV文件的所有行读取到列表中。但是,TSV读取器提前终止,而不是读取整个文件。我知道这一点,因为data
仅为整个文件长度的1/6。发生这种情况时不会抛出错误
当我手动检查它终止的行(对应于data
的长度)时,这些行有大量的Unicode符号。我原以为我可以捕获UnicodeDecodeError,但它没有抛出错误,而是完全停止读取整个文件。我想它击中了什么东西,触发了文件的结尾
真正让我感到困惑的是:只有在Windows Server 2012上使用Python 2.7时,才会出现错误。在使用下面两段代码的Python 2.7的Unix实现上,该文件的读取效果100%完美。我在两个方向上都在Anaconda内部运行
以下是我尝试过的,但都不起作用:
data = []
with open('data.tsv','r') as infile:
csvreader = csv.reader((x.replace('\0', '') for x in infile),
delimiter='\t', quoting=csv.QUOTE_NONE)
data = list(csvreader)
我也试着逐行阅读
with open('data.tsv','r') as infile:
for line in infile:
try:
d = line.split('\t')
q = d[0].decode('utf-8') #where the unicode symbols are located
data.append(d)
except UnicodeDecodeError:
continue
提前谢谢
根据the documentation的一般性建议:
因此,请使用以下方法打开您的文件:
此外,如果字符串具有unicode数据,则必须对其进行解码,或者只使用^{} 作为替换项,这样就不必担心了
相关问题 更多 >
编程相关推荐