从文档中提取数据

时间:2016-12-16 20:09:55

标签: powershell

我有一个文本文件,其数据如下:

PMT[ST][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]

这些行将在整个文档中多次显示,并带有变体,例如字母后面的字母数字字符" PMT"在第一行。

我需要找到一种方法,以便每当它找到" PMT"它拉出那个和接下来的9个符号,将它放入CSV中,然后放入"完成这个工作"在CSV的下一个位置排成一行。

我知道我需要将模式设置为$WLDir(其中Select-String $WLDir -pattern “PMT[ST][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]” 是文件名。):

import wx, wx.lib.agw.advancedsplash as AS, sys, os, matplotlib
matplotlib.use('WXAgg')
from threading import Thread

#some function definitions

class application(wx.Frame):
  #the UI code here

class mod(Thread):
  #blah blah

if __name__ == "__main__":
  app = wx.App(redirect=True, filename="logfile.txt")

  image = wx.Image("splash.png")
  image.ConvertAlphaToMask()
  bitmap = wx.BitmapFromImage(image)
  splash = AS.AdvancedSplash(None, bitmap=bitmap, timeout=4000, agwStyle=AS.AS_TIMEOUT | AS.AS_CENTER_ON_SCREEN)

  import time
  import telnetlib
  import ownmodule
  import matplotlib.pyplot as plt
  from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas
  from matplotlib.backends.backend_wx import NavigationToolbar2Wx as NavigationToolbar
  from matplotlib.figure import Figure

  frame = application(None, -1, "AdvancedSplash Test")
  app.MainLoop()

我无法弄清楚我的下一步行动是将该部分与第2行相隔离并将它们设置为CSV中的单元格数据。有人可以帮忙吗?我很抱歉,因为我似乎没有在这里完成我的作业,但我一直试图使用a previous question和一些some Hey! Scripting Guy!作为参考,但我只是卡住了

1 个答案:

答案 0 :(得分:6)

不是100%确定结果应该是什么样子,但我认为您需要一个包含TimeTopicStatus列的CSV:

Select-String $WLDir -pattern '(PMT[ST]\d{8})' -Context 0,2 | ForEach-Object {
    [PSCustomObject]@{
        Time = $_.Matches.Groups[1].Value
        Topic = $_.Context.PostContext[0]
        Status = $_.Context.PostContext[1]
    }
} | ConvertTo-Csv -NoTypeInformation

这将输出:

"Time","Topic","Status"
"PMTS09526052","NON PC HARDWARE - TROUBLESHOOT SW","Complete this Job"