代码之家  ›  专栏  ›  技术社区  ›  agenis

python:导入不带分隔符的纯文本文件

  •  0
  • agenis  · 技术社区  · 6 年前

    我想将一个从数据库中提取的文本文件导入到python中。它是一种纯文本格式,没有行尾分隔符(但我知道应该有固定数量的列)。 每一行都用一个递增的ID标识。( "0001" , "0002" ,请 "0003" 在下面的示例中)。

    我尝试了不同的方法,最后这一个:

    with open('url.txt', "rb") as f:
        df = f.read().decode(errors="replace")
    

    但这给了我一个巨大的字符串然后我用一个循环在ID上尝试了一些regex,然后在 "," 问题是有时丢失的数据会被编码 \N 如果没有引号,则不会返回每行相同数量的列。数据样本:

    "0001","2015-01-01","doc","eab4e80fec7352a7","https://www.paypal.com/us","setRequestHeader(\"Content-Type\")","0002","2015-01-02","doc","0",\N,\N,"0003",etc.
    

    预期的输出应该是一个包含列的PANDAS数据框:id、date、doctype、hash、url、code。 我知道怎么做吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Axel Puig    6 年前

    要获得数据帧,可以执行以下操作:

    with open('testfloat', "rb") as f:
        df = f.read().decode(errors="replace")
    df = df.replace('\\N', '""')  # Replace \N by empty strings
    df = df[1:-1]  # remove first and last "
    df_list = df.split('","')  # Splitting values
    
    array = [df_list[i:i+6] for i in range(0, len(df_list), 6)]  # Extract the lines
    
    df = pd.DataFrame(array)