python pandas read_csv无法读取字符双引号两次

时间:2016-04-27 17:50:23

标签: python csv pandas

我正在尝试使用包含双引号半列的半列分隔符的2列csv文件(error.csv):

col1;col2
2016-04-17_22:34:25.126;"Linux; Android"
2016-04-17_22:34:25.260;"{"g":2}iPhone; iPhone"

我正在努力:

logs = pd.read_csv('error.csv', na_values="null", sep=';', 
                   quotechar='"', quoting=0)

据我所知,问题来自我在第3行的双引号中引用双引号“g”,但我无法弄清楚如何处理它。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您可能需要预处理数据,使其符合预期的CSV格式。我怀疑pandas只会通过更改一个或两个参数来处理这个问题。

如果只有两列,并且第一列从不包含分号,那么您可以在第一个分号上拆分行:

records = []
with open('error.csv', 'r') as fh:
    # first row is a header
    header = next(fh).strip().split(';')

    for rec in fh:
        # split only on the first semi-colon
        date, dat = rec.strip().split(';', maxsplit=1)
        # assemble records, removing quotes from the second column
        records.append((date, dat.strip('"')))

# create a data frame
df = pandas.DataFrame.from_records(records, columns=header)

如果您希望第一列包含正确的日期而不是字符串,则必须使用datetime模块自行手动解析日期。