【问题标题】:How to read with Pandas txt file with column names in each row如何使用 Pandas txt 文件读取每行中的列名
【发布时间】:2020-07-18 05:57:17
【问题描述】:

我是 Python 的初学者,我需要读取一个 txt 文件,其中每一行都有列名,列是无序的,并不是所有的列都被告知。有没有办法用 Pandas 读取这种文件? 这是一个示例(3 行):

pepe01@mail.com:{ssha}fiy9XI6d:created="1575487257" fwd="" spf_block="" quota="1024mb" full_name="Full Name" mailaccess="envia" mailstatus="cancelled"

pepe02@mail.com:{ssha}Q0H90Rf9:created="1305323967" mailaccess="1" mailstatus="active" admin_access="" quota="" expire="0" full_name="Full Name" pais="CO"

pepe03@mail.com:{ssha}sCPC3HOE:created="1550680636" fwd="" pass_question="" pass_answer="" disabled="Y" mailstatus="cancelled" full_name="Name"

【问题讨论】:

  • 我不是 pandas 专家,但查看您的数据,看来您必须先清理数据。就像有一封电子邮件,然后有 = 由 " " 分隔。

标签: python-3.x pandas


【解决方案1】:

您可以使用re 模块来解析文件。

例如:

import re
import pandas as pd


all_data = []
with open('<YOUR FILE>', 'r') as f_in:
    for line in f_in:
        m = re.search(r'^(.*?):(.*?):', line)
        if not m:
            continue
        data = dict(re.findall(r'([^\s]+)="([^"]+)"', line.split(':', maxsplit=2)[-1]))
        data['mail'] = m.group(1)
        data['password'] = m.group(2)
        all_data.append(data)

df = pd.DataFrame(all_data).fillna('')
print(df)

打印数据框:

      created   quota  full_name mailaccess mailstatus             mail        password expire pais disabled
0  1575487257  1024mb  Full Name      envia  cancelled  pepe01@mail.com  {ssha}fiy9XI6d                     
1  1305323967          Full Name          1     active  pepe02@mail.com  {ssha}Q0H90Rf9      0   CO         
2  1550680636               Name             cancelled  pepe03@mail.com  {ssha}sCPC3HOE                    Y

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-11
    • 2020-08-10
    • 2019-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多