我想将从某些数据库提取的文本文件导入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,代码。 关于如何做到这一点的任何想法?
答案 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)