无法在pandas read_csv中读取英寸符号

时间:2016-12-09 10:42:18

标签: python csv pandas dataframe

我有以下详情的csv

Name,Desc,Year,Location

Jhon,12" Main Third ,2012,GR

Lew,"291" Line (12,596,3)",2012,GR

,All, 1992,FR

...

这是一个很长的文件。我只是显示有问题的行。我很困惑如何在Pandas数据框中读取它,我试过

  • quotechar,
  • 引用,
  • 类似于pandas read_csv 的属性。 仍然没有成功。

我无法控制如何设计csv。

2 个答案:

答案 0 :(得分:1)

你可以这样做。试试这是否适合你:

import pandas as pd
import re

l1=[]
with open('/home/yusuf/Desktop/c1') as f:
    headers = f.readline().strip('\n').split(',')
    for a in f.readlines():
        if a:
            q = re.findall("^(\w*),(.*),\s?(\d+),(\w+)",a)
            if q:
                l1.append(q)

l2 = [list(b[0]) for b in l1]

df = pd.DataFrame(data=l2, columns=headers)
df

输出:

enter image description here

正则表达式演示:https://regex101.com/r/AU2WcO/1

答案 1 :(得分:0)

您不能在字段中包含分隔符。 例如,在

Lew,"291" Line (12,596,3)",2012,GR

Pandas假设您有6个字段,因为您有5个逗号,即使其中两个在引号之间。您需要对文本文件进行一些预处理以解决此问题,或者要求使用不同的分隔符(@或|似乎在我的经验中运行良好。

Pandas在阅读其他内容时没有任何问题:

import pandas as pd
print pd.read_csv('untitled.txt')

   Name             Desc  Year Location
0  Jhon  12" Main Third   2012       GR
1   NaN              All  1992       FR