首页 > 解决方案 > python:导入不带分隔符的纯文本文件

问题描述

我想将从某个数据库中提取的文本文件导入 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.

预期的输出应该是一个带有列的熊猫数据框:id、date、doctype、hash、url、code。关于我该怎么做的任何想法?

标签: pythonregextextimport

解决方案


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

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)

推荐阅读