如何从复杂的分隔符组合(从txt文件)创建数据帧?

2024-06-13 00:23:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从avast网站的virus-update-history section中搜集数据。数据格式如下:

28.03.2018 - 180328-2
PwrSh:EncCmndTest-A [Trj]
25.03.2018 - 180325-0
ELF:Mirai-MR [Trj], MacOS:Miner-A [Trj], Android:SpyAgent-ZW [Trj], Android:SpyAgent-ZX [Trj]

我的首选输出必须是:

28.03.2018    PwrSh    EncCmndTest-A    [Trj]
25.03.2018    ELF      Mirai-MR         [Trj]
25.03.2018    MacOS    Miner-A          [Trj]
25.03.2018    Android  SpyAgent-ZW      [Trj]
25.03.2018    Android  SpyAgent-ZX      [Trj]

我想用熊猫pd.read\U csv文件但我似乎无法找出正确的分隔符组合和创建此数据帧的确切循环。你知道吗


Tags: 数据网站macosandroidmrzxelfzw
1条回答
网友
1楼 · 发布于 2024-06-13 00:23:47

这不是最有说服力的解决方案,但这适用于您的示例,假设每个日期条目始终有三条关联的信息。你知道吗

import pandas as pd
import re

raw = ['28.03.2018 - 180328-2',
'PwrSh:EncCmndTest-A [Trj]',
'25.03.2018 - 180325-0',
'ELF:Mirai-MR [Trj], MacOS:Miner-A [Trj], Android:SpyAgent-ZW [Trj], Android:SpyAgent-ZX [Trj]']

out = []

with open('converted.csv', 'w') as myfile:
    for idx, i in enumerate(raw):
        if i[0].isdigit():
            date = i.split(' - ')[0]
        else:
            info = [j for j in re.split(r',| |:', i) if j!='']
            for i in range(int(len(info)/3)):
                myfile.write(date + ',' + ','.join(info[3*i:3*(i+1)]) + '\n')

df = pd.read_csv('converted.csv', header=None)

print(df)

输出:

            0        1              2      3
0  28.03.2018    PwrSh  EncCmndTest-A  [Trj]
1  25.03.2018      ELF       Mirai-MR  [Trj]
2  25.03.2018    MacOS        Miner-A  [Trj]
3  25.03.2018  Android    SpyAgent-ZW  [Trj]
4  25.03.2018  Android    SpyAgent-ZX  [Trj]

相关问题 更多 >