【发布时间】:2018-12-06 01:41:25
【问题描述】:
我想将一个从某个数据库中提取的文本文件导入 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、date、doctype、hash、url、code。 知道我该怎么做吗?
【问题讨论】:
-
您能否提供文件在文件编辑器中打开后的截图?
-
你试过
df.split(',')吗?然后你只需要避免'\\N'值,但你有正确的列数。 -
@dexter 谢谢。由于机密性,我认为我不能,但在文本编辑器中,它的开始就像我的示例一样......
-
“避免使用 \\N 值”是什么意思?
-
类似的东西:
df = df.replace('\\N', '""')