当我在记事本++中打开CSV文件时,它显示编码是ANSI,并且换行符显示为LF。我尝试通过python删除这些换行符,但没有找到解决方案。我尝试过几个解决方案:
with open(csvTable, 'r') as f:
raw_csv = f.read()
clean_csv = raw_csv.strip()
with open(csvTable2, 'w') as f:
f.write(clean_csv)
以及:
data_set = pd.read_csv(data_file,skip_blank_lines=True, encoding='ANSI')
data_set.to_csv(target_file,index=False)
有人能给我指一下正确的方向吗?
2条答案
按热度按时间6rqinv9w1#
您可以(并且应该)使用csv模块进行任何与CSV相关的工作;除了允许你控制行终止符之外,它还将保留可能存在于一个“单元格”中的内部换行符。
以下内容:
newline=""
指令告诉由open()创建的文件处理程序在读写文件时不要对换行符做任何操作;csv模块的读取器和写入器将处理所有换行符lineterminator="\r\n"
下面是我的输入.csv:
从hexdump来看:
我们可以看到,行结束符是LF(0a),根据CP-1252,à和字符被编码为e0和ff。
下面是输出.csv:
用肉眼看起来是一样的;下面是它在hexdump中的样子:
我们可以看到:
sxissh062#
我最终使用这篇文章来创建一个解决方案:Replace CRLF with LF in Python 3.6它也帮助我度过了难关,并提供了对引擎盖下发生的事情的了解。