如何匹配文件中的确切模式

时间:2018-01-08 11:19:23

标签: python

我的文件内容低于

1191,agg.list,ShareCapitalHistory[CapitalAmount],CompanyElementDefinition
838983,atom.list,ShareCapitalHistory[CapitalAmount][*],CompanyElementDefinition
789,agg.list,CapitalAmount,CompanyElementDefinition
08f610,atom.list,CapitalAmount[*],CompanyElementDefinition

我正在编写一个程序来过滤掉与我的键匹配的所有行,忽略括号和星号。密钥将是文件的第三列,其中包含agg.list。例如

CapitalAmount是一个agg.list值,这将是搜索的关键。当我用上面的搜索键作为键时,我应该获得CapitalAmount [*]。

为实现这一点,我有以下程序

import sys

with open(sys.argv[1]) as myfile:
    for row in myfile:
        if (sys.argv[2] in row.replace('[', '').replace(']', '') and "[*]" in row):
            if row.split(',')[1] != 'agg.list':
                print row.split(',')[2]

我将第二个参数传递为CapitalAmount,但我得到的信息如下所示

CapitalAmount[*]
ShareCapitalHistory[CapitalAmount][*]

我的程序正在检查密钥是否可用,并打印所有包含密钥的行。但我想要的只是打印

CapitalAmount[*]

我听说过regsps并找到了相关的帖子here。 但我不确定如何在我的程序中使用它。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

import sys

with open(sys.argv[1]) as myfile:
    for row in myfile:
        split_line = row.split(',')
        list_name = split_line[1]
        dict_string = split_line[2]
        if "[" in dict_string:
            element = dict_string.split('[')[0]
        else:
            element = dict_string
        if list_name != 'agg.list' and sys.argv[2] in element:
            print("result of search for", sys.argv[2], ":", dict_string)