解析不规则的空格分隔文本文件

时间:2017-12-30 14:05:24

标签: python pandas parsing text whitespace

我正在尝试解析 set 不规则间隔的txt文件。 有关屏幕截图示例,请参阅:Example 1 文本文件如下所示:

 Date             This is a              Task       Location                Postal
                     short                                                   code
                 Description
01.01.2000       The weather on this     Take the   Lyon which is a nice    0000123451151 
                 day must have been      Trash out  city. What we do not 
                 very nice. The sun                 know is an opaque 
                 was shining.                       riddle 
02.01.2000       This was a very cold    Eat ice-   Zurich was a nice        0123124 
                 and rainy day. There    cream      trip.
                 must have been some
                 issue with the air-
                 conditioner.
05.01.200        Very rainy day. Sad.    Feel blue  Berlin                   12345

我第一次使用:

pd.read_table('testfile.txt') #,sep=r"\s*")

因以下原因失败:

ParserError: Error tokenizing data. C error: Expected 1 fields in line 6, saw 5

我使用pandas的最接近的是固定分隔符方法:

pd.read_fwf('testfile.txt',delim_whitespace=True,skipinitialspace =True,skip_blank_lines=True)

这产生了以下数据帧:fwf result其中(不出意外地由于fwf中的f)字符串的一部分在多个列上分开(注意:这是通过构造,它发生在我的真实世界数据中,也是)。

同样,元素不规则白色spate分离。那就是文本testfile.txt第一行与file2.txt相比有不同的#characters。因此,我无法计算空格并将其应用于其他文件。

视觉1可以看到始终用空格(可变长度)分隔。我一直致力于一个(诚然不是很干净)的解决方案:GitHub

这个想法是逐行遍历文件并用一个启发式替换空格,例如:"三个空格后跟非空格字符,然后用分隔符替换第三个空格"然后根据类似的启发式填充分隔符。该过程在GitHub上有更详细的描述。

我希望能以更好的方式解决这个问题。

非常感谢!

0 个答案:

没有答案