python - 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。关于我该怎么做的任何想法?
解决方案
要获取数据框,您可以执行以下操作:
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)
推荐阅读
- prometheus - 如何在 Alertmanager 中向一个接收组发送多个警报?
- sql - 在 Oracle 中对 1 个列表执行功能
- javascript - 为什么node.js服务器和mongodb有时间差?
- php - 在 Codeigniter 控制器中显示数据库结果数组并在视图中传递
- oracle - PL/SQL 过程/函数
- vue.js - Vue.js - 数据值未从道具设置
- php - PHP: storing lines from a csv into arrays
- python - 将 pdf 转换为 jpg - 看不到输出
- css - 带反应的条纹文档样式sidenav
- c# - 单击保存按钮时触发表单验证规则