2017-06-22 51 views
1

我遇到一个问题,阅读使用熊猫分页标签分离文件。阅读与Python熊猫分页标签文件

所有的单元格值都有双引号,但对于某些行,还有一个额外的双引号可以打破整个过程。例如:

Column A Column B Column C 
"foo1" "121654" "unit" 
"foo2" "1214" "unit" 
"foo3" "15884"" 

我得到的错误是:错误标记数据。答案:C:应符合8355 31场,只见58

我使用的代码是:

csv = pd.read_csv(file, sep='\t',  lineterminator='\n', names=None) 

并能正常工作的文件的其余部分,但不是在那里这些额外的双引号出现的那些。

+1

但您的输入数据已损坏。修复创建buggy文件的代码不是更简单吗? –

+0

你是对的,除了这个数据来自我们的客户之一。有没有解决方案来读取这个特定的文件? –

+0

只有在行尾或任何地方才会遇到双引号? –

回答

1

如果你不能改变车的输入,最好的办法是读取输入文件转换成io.StringIO对象,取代了双引号,然后将这个类似文件的对象传递给pd.read(它支持文件名和文件类对象)

这样您就不必创建临时文件或更改输入数据。

import io 

with open(file) as f: 
    fileobject = io.StringIO(f.read().replace('""','"')) 

csv = pd.read_csv(fileobject, sep='\t', lineterminator='\n', names=None) 
1

你可以做预处理步骤来解决报价问题:

with open(file, 'r') as fp: 
    text = fp.read().replace('""', '"') 

with open(file, 'w') as fp: 
    fp.write(text) 
+0

感谢您的答案。这说得通。当我回到我的电脑时,我会稍微尝试一下 –