【问题标题】:How to search for 3 seperate strings in multiple files and print them to an excel file in python?如何在多个文件中搜索 3 个单独的字符串并将它们打印到 python 中的 excel 文件中?
【发布时间】:2019-12-07 05:07:17
【问题描述】:

我有一个脚本在将它们打印到 excel 文件之前寻找 4 个单独的字符串。前 3 个是我用正则表达式搜索的单独单行的字符串,第 4 个是我用漂亮的汤 4 搜索的代码块。我能够得到漂亮汤的文本,但不是前 3出于某种原因。

import xlwt 
from xlwt import Workbook 
import os
from bs4 import BeautifulSoup
import re
from os import listdir

fileNumber = 1
cve = ""
titlePrint = ""
titleStrip = ""
date = ""
code = ""
col = 0
row = 0


directory = "/Users/Documents/databasescript/web_scrape_db/exploits_test_folder"

for filename in os.listdir(directory):
    if filename.endswith(".txt"):
        with open(str(fileNumber) + ".txt") as f:

            for line in f:
                #CVE

                if re.search(r'https://nvd.nist.gov/vuln/detail/', line):
                    cve = line[118:131]
                    print"found 'https://nvd.nist.gov/vuln/detail/'"

                #Title
                if '<h1 class="card-title text-secondary text-center"' in line:
                    titlePrint = f.next().translate(None, '&#039;').strip()
                    print "found title"
                #Date
                if '<meta property="article:published_time"' in line:
                    date = line[53:63]
                    print "found date"

                if fileNumber == 6:
                    break       
                #Source Code
                soup = BeautifulSoup(open("/Users/Documents/databasescript/web_scrape_db/exploits_test_folder/"+(str(fileNumber))+".txt"), "html.parser")




                #increment file number      
                fileNumber+=1

文件中的字符串遵循以下格式:

https://nvd.nist.gov/vuln/detail/
<h1 class="card-title text-secondary text-center"
<meta property="article:published_time"

【问题讨论】:

  • 考虑简化这一点。这个问题是关于写入 xlsx 还是查找字符串。
  • @user1558604 查找字符串,因为它没有找到它们。我可以写入 excel 文件,但找不到前 3 个字符串 CVE、Title 和 Date
  • 请编辑您的问题并提供一个不包含任何 xlsx 代码的最小、可重现的示例。
  • @user1558604 我编辑了它

标签: python regex excel string file


【解决方案1】:

该脚本可能正在执行 fileNumber == 6 条件并在到达您要查找的这 3 个字符串之前跳出循环。

您的脚本仅在第一个 .txt 文件的前 6 行中搜索,然后是每个其他 .txt 文件的第一行。

也许您想将 fileNumber+=1 移回您的 if filename.endswith(".txt"): 条件中?

【讨论】:

    猜你喜欢
    • 2015-11-12
    • 2011-12-29
    • 2016-10-20
    • 2015-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-07
    • 1970-01-01
    相关资源
    最近更新 更多