首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从复杂的分隔符组合(从txt文件)创建数据帧?

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

Stack Overflow用户
提问于 2018-03-29 23:38:34
回答 1查看 50关注 0票数 0

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

代码语言:javascript
复制
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]

为此,我的首选输出必须是:

代码语言:javascript
复制
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]

我正在尝试使用pandas pd.read_csv,但我似乎找不到正确的分隔符组合和确切的循环来创建此数据帧。

EN

回答 1

Stack Overflow用户

发布于 2018-03-30 00:21:04

这不是最有说服力的解决方案,但它适用于您的示例,假设每个日期条目总是有三条相关的信息。

代码语言:javascript
复制
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)

输出:

代码语言:javascript
复制
            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]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49560061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档