具有隐形字符的新行

时间:2017-03-18 14:43:46

标签: python python-3.x csv

我确信之前已经回答了这个问题,但在尝试寻找其他有问题的人之后我没有太多运气。

我正在使用csv.reader来解析CSV文件。该文件格式正确,但在CSV文件的其中一行中,我收到通知“列表索引超出范围”,表示格式错误。当我看到这条线时,我没有看到任何错误。但是,当我回到我获得文本的网站时,我看到一个有空格的方形/矩形符号。此符号必须引导csv.reader将其视为新行符号。

几个问题:1)这个符号是什么,为什么我在文本文件中看不到它? 2)我如何避免将这些作为新线处理?我想知道最好的方法是找到并替换它们,因为我将以不同的方式多次处理文件。

这是符号:

character causing new line

更新:当我将符号复制并粘贴到Google时,它会搜索Â(a-circumflex)。但是,当我将Â复制并粘贴到我的文档中时,它会正确显示。这让我相信这个符号实际上不是Â。

1 个答案:

答案 0 :(得分:1)

这看起来像一个字符集问题。在UTF-8中,“{”是a non-breaking space的拉丁语-1。假设您正在运行Windows,则使用其中一个latins作为字符集。 UTF-8是OSX和基于Linux的操作系统的默认编码。 OS语言环境在大多数文本编辑器中用作默认语言环境,因此将使用这些程序创建的文件编码为latin-1。 OSX上的许多程序员都遇到了不间断空间的问题,因为很容易错误地输入它(它是Option + Spacebar)并且无法看到。

在python> = 3.1中,csv阅读器支持解决这些问题的方言。如果您知道用于创建csv文件的程序,则可以手动指定方言,例如“excel”。您可以使用csv sniffer通过查看文件来自动推断它。

生活管理建议:如果您碰巧看到奇怪的字符,请始终假设字符集问题。有一个很棒的字符集问题调试表HERE