如何在txt文件中选择某个字符串并将其在csv文件中列出? - python

这是我在文本文件中的内容:我只想获取此sha1和说明,然后使用前缀和定界符将其解析为csv文件并修剪字符串,然后在“ \”和“->”之间选择sha1,然后我想要获取描述。

         +----------------------------------------------------+
         |          VSCAN32            Ver 2.00-1655          |
         |                                                    |
         |     Copyright (c) 1990 - 2012 xxx xxx xxx Inc.     |
         |                                                    |
         |    Maintained by xxxxxxxxx  QA for VSAPI Testing   |
         +----------------------------------------------------+

Setting Process Priority to NORMAL: Success 1

Successfully setting POL Flag to 0
VSGetVirusPatternInformation is invoked
Reading virus pattern from lpt$vpn.527 (2018/09/25) (1452700)


Scanning samples_extracted\88330686ae94a9b97e1d4f5d4cbc010933f90f9a->(MS Office 2007 Word 4045-1)
->Found Virus [TROJ_FRS.VSN11I18]



Scanning samples_extracted\8d286d610f26f368e7a18d82a21dd68b68935d6d->(Microsoft RTF 6008-0)
->Found Virus [Possible_SMCCVE20170199]



Scanning samples_extracted\a10e5f964eea1036d8ec50810f1d87a794e2ae8c->(ASCII text 18-0)
->Found Virus [Trojan.VBS.NYMAIM.AA]


18 files have been checked.
 Found 16 files containing viruses.
(malloc count, malloc total, free total) = (0, 35, 35)

到目前为止,这是我的代码:它仍然输出许多字符串,但我只需要将sha1和说明在csv中解析即可(我使用split),因此可以在“ \”和“->”之间选择sha1,但确实将sha1放在了其中,描述未修剪,内容仍然存在

import csv

INPUTFILE = 'input.txt'
OUTPUTFILE = 'output.csv'
PREFIX = '\\'
DELIMITER = '->'

def read_text_file(inputfile):
    data = []
    with open(inputfile, 'r') as f:
        lines = f.readlines()

    for line in lines:
        line = line.rstrip('\n')
        if not line == '':
            line = line.split(PREFIX, 1)[-1]
            parts = line.split(DELIMITER)
            data.append(parts)

    return data

def write_csv_file(data, outputfile):
    with open(outputfile, 'wb') as csvfile:
        csvwriter = csv.writer(csvfile, delimiter=',', quotechar='"',
                                quoting=csv.QUOTE_ALL)
        for row in data:
            csvwriter.writerow(row)

def main():
    data = read_text_file(INPUTFILE)
    write_csv_file(data, OUTPUTFILE)

if __name__ == '__main__':
    main()

这是我想要的csv中的内容:sha1和description,但是我的输出文件显示了整个文本文件,但是它过滤了sha1并将其放在一列中
如何在txt文件中选择某个字符串并将其在csv文件中列出? - python

编辑:起初它在工作,但是由于多行,可以将这一行文本放在csv文件中,请问任何答案吗?

Scanning samples_extracted\0191a23ee122bdb0c69008971e365ec530bf03f5
 - Invoice_No_94497.doc->Found Virus [Trojan.4FEC5F36]->(MIME 6010-0)

 - Found 1/3 Viruses in samples_extracted\0191a23ee122bdb0c69008971e365ec530bf03f5

参考方案

更改最少-您可以使用以下部分代码:

for line in lines:
    line = line.rstrip('\n')
    if not line == '' and DELIMITER in line and not "Found" in line: # <---
        line = line.split(PREFIX, 1)[-1]
        parts = line.split(DELIMITER)

但是我更喜欢使用正则表达式:

import re

for line in lines:
    line = line.rstrip('\n')
    if re.search(r'[a-zA-Z0-9]{40}->\(', line): # <----
        line = line.split(PREFIX, 1)[-1]
        parts = line.split(DELIMITER)
        data.append(parts)

结果将是:

cat output.csv
"88330686ae94a9b97e1d4f5d4cbc010933f90f9a","(MS Office 2007 Word 4045-1)"
"8d286d610f26f368e7a18d82a21dd68b68935d6d","(Microsoft RTF 6008-0)"
"a10e5f964eea1036d8ec50810f1d87a794e2ae8c","(ASCII text 18-0)"

在返回'Response'(Python)中传递多个参数 - python

我在Angular工作,正在使用Http请求和响应。是否可以在“响应”中发送多个参数。角度文件:this.http.get("api/agent/applicationaware").subscribe((data:any)... python文件:def get(request): ... return Response(seriali…

Python exchangelib在子文件夹中读取邮件 - python

我想从Outlook邮箱的子文件夹中读取邮件。Inbox ├──myfolder 我可以使用account.inbox.all()阅读收件箱,但我想阅读myfolder中的邮件我尝试了此页面folder部分中的内容,但无法正确完成https://pypi.python.org/pypi/exchangelib/ 参考方案 您需要首先掌握Folder的myfo…

R'relaimpo'软件包的Python端口 - python

我需要计算Lindeman-Merenda-Gold(LMG)分数,以进行回归分析。我发现R语言的relaimpo包下有该文件。不幸的是,我对R没有任何经验。我检查了互联网,但找不到。这个程序包有python端口吗?如果不存在,是否可以通过python使用该包? python参考方案 最近,我遇到了pingouin库。

Python ThreadPoolExecutor抑制异常 - python

from concurrent.futures import ThreadPoolExecutor, wait, ALL_COMPLETED def div_zero(x): print('In div_zero') return x / 0 with ThreadPoolExecutor(max_workers=4) as execut…

如何用'-'解析字符串到节点js本地脚本? - python

我正在使用本地节点js脚本来处理字符串。我陷入了将'-'字符串解析为本地节点js脚本的问题。render.js:#! /usr/bin/env -S node -r esm let argv = require('yargs') .usage('$0 [string]') .argv; console.log(argv…