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

时间:2018-12-06 01:41:26

标签: python regex text import

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

我尝试了不同的方法,最终尝试了这种方法:

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

但这给了我一个巨大的字符串……然后我尝试使用一些正则表达式使用循环在ID上进行拆分,然后在","上进行子拆分,问题是有时丢失的数据被编码为\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,日期,doctype,哈希,url,代码。 关于如何做到这一点的任何想法?

1 个答案:

答案 0 :(得分:1)

要获取数据框,您可以执行以下操作:

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)