java - 如何从文本文件集合中提取某些值

标签 java python text text-parsing pyparsing

假设我有一组需要处理的文本文件(例如搜索某个标签并提取值)。解决这个问题的一般方法是什么?

我还读过这个:"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/cabackupCOMMSVR21/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 

最佳答案

我总是把 Python 推到人们面前;)

我建议查看正则表达式:http://docs.python.org/howto/regex.html ,因为它可能适合您的需求。我不会为你做这件事(因为我不能),但我知道如果你的文件是以冒号分隔的键/值对并用换行符分隔,那么这会起作用。这是一个快速入门(可能有效):

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

这匹配三组(希望如此):冒号之前的组(组 1)、空格(组 2,可以丢弃)以及该组和新行之间的文本(组 3)。

玩这个(我不想有正则表达式动脉瘤,所以这是我目前能提供的帮助)。祝你好运!

关于java - 如何从文本文件集合中提取某些值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4611522/

相关文章:

php - 在文本文件中转换 "enter"in\n

jquery - 如何替换 HTML 标记的文本

Java 标准构建器查询不为空或为空

java - 如何从具有 IN 和 OUT 参数的 Hibernate 调用存储过程

java - 在后台运行进程,linux ubuntu

java - 处理2.0b8 : Virtual Memory Size increasing on macosx

python - tensorflow.train.import_meta_graph 不起作用?

python - Django 数据保存和呈现

python - 如何使用 `env python3`并保留调用环境?

javascript - 来自外部 .csv 或 .txt 文件的 d3.js 云?