Python如何只编写case语句和以$from输入文本文件开头的实例?

2024-06-03 02:16:04 发布

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

我只想写入一个文件大小写行,并且所有实例都以符号$开始,在nvp_add function after语句扩展属性来自下面的输入文件,所以我期望在我的文本输出文件中输出如下所示。在

case "11": ### eventDDoSLow  

$severity
$description
$eventID
$eventURL
$alertLevel
$eventStart
$eventSourceCount
$eventSourceTable
$eventDestCount
$eventDestTable 
$eventProtocolCount
$eventProtocolTable

输入文件如下:


^{pr2}$

Tags: 文件实例文本add属性符号functionnvp
2条回答

这样可以做到:

import re

statement = '@ExtendedAttr = nvp_add'

with open('test.txt') as src, open('out.txt', 'wb') as dst:
    declaration = next(line for line in src if line.strip().startswith(statement))
    for line in src:
        declaration += line
        if ')' in line: break
    symbols = re.findall('\$[a-z]+', declaration, re.IGNORECASE) # ['$severity', '$description', '$eventID', ...
    # Now write to file
    dst.write("""case "11": ### eventDDoSLow\n""")
    for symbol in symbols:
        dst.write(symbol + '\n')
import re


def main():
  caselines_index = []
  results = []
  cases = []
  nvp_add_searchterm = "nvp_add\(.+?\)"
  searchterm = "(\$.+?)[\,\)]"
  readlines = []

  with open("file.txt", 'r') as file:
    readfile = file.read()
    for line in readfile.split('\n'):
      readlines.append(line.strip())
    for line in readlines:
      if 'case "' in line:
        caselines_index.append(readlines.index(line))
    print caselines_index
    a = 0
    for line_index in caselines_index:
      int_line_index = int(line_index)
      index_of_line_index = caselines_index.index(line_index)
      case_text = ' '.join(readlines[int_line_index:caselines_index[index_of_line_index + 1]]).strip()
      case = [readlines[int_line_index].strip(), case_text]
      cases.append(case)
  with open("result.txt", 'w+') as result_file:
    for case_list in cases:
      caseline = case_list[0].strip()
      result_file.write(caseline + "\n")
      nvp = re.findall(nvp_add_searchterm, case_list[1].strip())

      for item in nvp:
        result_list = re.findall(searchterm, item)

        for result in result_list:
          if "$*" not in result:
            result_file.write(result + "\n")

if __name__=="__main__":
  main()

它现在起作用了!在

相关问题 更多 >