2011-01-06 74 views
0

說,我有一個需要處理的文本文件(例如,搜索某個標籤並提取值)的集合。解決這個問題的一般方法是什麼?如何從文本文件集合中提取某些值

我也看過這樣的:"Retrieve Variable Values from Python"但似乎並不適用於一些我所面臨的情況下(如tab是用來代替:

我只是想知道最合適的方式來解決這個問題,無論使用的語言。

說我有這樣的:

Name: Backup Operators SID: S-1-5-32-551 Caption: COMMSVR21\Backup Operators Description: Backup Operators can override security restrictions for the sole purpose of backing up or restoring files Domain: COMMSVR21 
COMMERCE/cabackup 
COMMSVR21/sys5erv1c3 

我希望能夠訪問/檢索Backup Operators價值和得到的回報COMMERCE/cabackup & COMMSVR21/sys5erv1c3

你會怎麼做?

我想到的是閱讀整個文本文件,正則表達式搜索和可能一些if else語句。這有效嗎?或者,也許解析文本文件可能是一些數組並檢索它?我不確定。

就像另一個例子說:

 GPO: xxx & yyy Servers 
      Policy:   MaximumPasswordAge 
      Computer Setting: 45 

你如何檢查的文本文件Policy = MaximumPasswordAge和返回值45

謝謝!

P/S - 我可以在Python中這樣做(零知識,所以拿起它的飛行)或Java

PP/s的 - 我才意識到,有沒有擾流板標籤。嗯

-

例如, 日誌與目錄權限:原木

C:\: 
    BUILTIN\Administrators Allowed: Full Control 
    NT AUTHORITY\SYSTEM Allowed: Full Control 
    BUILTIN\Users Allowed: Read & Execute 
    BUILTIN\Users Allowed: Special Permissions: 
      Create Folders 
    BUILTIN\Users Allowed: Special Permissions: 
      Create Files 
    \Everyone Allowed: Read & Execute 
    (No auditing) 

C:\WINDOWS: 
    BUILTIN\Users Allowed: Read & Execute 
    BUILTIN\Power Users Allowed: Modify 
    BUILTIN\Power Users Allowed: Special Permissions: 
      Delete 
    BUILTIN\Administrators Allowed: Full Control 
    NT AUTHORITY\SYSTEM Allowed: Full Control 
    (No auditing) 

另一條與以下內容:

Audit Policy 
    ------------ 
     GPO: xxx & yyy Servers 
      Policy:   AuditPolicyChange 
      Computer Setting: Success 

     GPO: xxx & yyy Servers 
      Policy:   AuditPrivilegeUse 
      Computer Setting: Failure 

     GPO: xxx & yyy Servers 
      Policy:   AuditDSAccess 
      Computer Setting: No Auditing 

這是製表符分隔的一個:

User Name Full Name Description Account Type SID Domain PasswordIsChangeable PasswordExpires PasswordRequired AccountDisabled AccountLocked Last Login 
53cuR1ty  Built-in account for administering the computer/domain 512 S-1-5-21-2431866339-2595301809-2847141052-500 COMMSVR21 True False True False False 09/11/2010 7:14:27 PM 
ASPNET ASP.NET Machine Account Account used for running the ASP.NET worker process (aspnet_wp.exe) 512 
+0

如果你可以自由決定輸入文件的語法,你可以把它寫成純Python代碼! – 2011-01-06 03:53:04

+0

嘿,那很好。或者爲了讓它更有趣,Lisp;) – Blender 2011-01-06 03:54:28

+0

@Vijay Mathew:嗨。你是什​​麼意思?你能改說嗎?如果我正確地得到你,輸入文件總是具有相同的格式。 @Blender:哦,上帝​​Lisp。 – 2011-01-06 03:58:56

回答

1

我總是推Python的進入了人們的面孔;)

我推薦看正則表達式:http://docs.python.org/howto/regex.html,因爲它可能適合您的需求。我不會爲你做(因爲我不能),但我知道如果你的文件是由換行符分隔的以冒號分隔的鍵/值對,這將起作用。這裏有一個快速啓動(可能工作):

regex = '(.*):(*)(.*)\n' 

這符合三組(希望):冒號前A組(第1組),空間(第2組,它可以扔掉),以及該文和新行之間的文本(組3)。

玩這個(我不想有一個正則表達式動脈瘤,所以這是我現在可以幫助的)。祝你好運!

+0

@Blender:所以你說我應該解析整個文本文件,然後使用'regex'過濾我想要的值?那麼,的確,我預見了正則表達式動脈瘤對我來說XD謝謝 – 2011-01-06 03:58:09

+0

如果它的語法是一致的,那麼肯定。如果不是,事情可能變得非常難看。你可以上傳/張貼更大的樣本塊嗎?我可以嘗試寫一個示例腳本... – Blender 2011-01-06 04:02:10

+0

添加了幾個示例 – 2011-01-06 04:17:04