匹配txt文件中的字符串并获取它旁边的数字python

时间:2017-04-11 11:44:16

标签: python pandas

我有一个目录,其中包含大约100个txt文件。

这是我的txt文件的外观

...............some text...............
('Doc accuracy ', 0.936046511627907, ' No of corrections ', 11)
http://10.x.x.1/link
...............some text...............
('FinalSpreadSheet_len', 172)
Done processing filename : file1.pdf
Status : success
...............some text...............

在本文档中

    accuracy = 0.936046511627907
    url=         http://10.x.x.1/link
    Status : success
    filename : file1.pdf

我有100个这样的不同文件。

我要做的是生成包含列

的excel
filename    accuracy    url    status

对于每个文件,它应该从.txt文件中获取详细信息 并为100个这样的文件生成excel。

我的部分代码(我能够获取目录中的所有文件)

x = [f for f in os.listdir('G:/path/to/directory') if f.endswith('.txt')]

之后应该从列表中获取每个文件,并找到必要的值并生成excel

1 个答案:

答案 0 :(得分:1)

由于您已经获得了包含目录中所有文件的列表,并假设您将名称存储在名为filenames_list的列表中,因此该代码将起作用。

对于filename内的每个filename_list,此代码将:

  1. open文件
  2. 每行
  3. read并将其存储在名为list的{​​{1}}
  4. 中 每行
  5. lines,它会检查是否存在以下任何内容:for'Doc accuracy''http://''Done processing filename :'
  6. 如果其中任何一个存在,对于每一个,程序将表现不同。

    4.1如果找到术语'Status :',它会将其存储在名为'http://'的变量中;

    4.2如果找到url,它会将其值存储在变量'Status :'中,等等......

  7. <强>代码:

    status

    <强>输出:

    filename_list = ['file1.txt', 'file2.txt', 'file3.txt', ...]
    
    valuable_data = []
    for filename in filename_list:
    
        with open(filename, 'r') as f:
            lines=f.readlines()
    
        for l in lines:
            if 'Doc accuracy' in l:
                acc = l.split(",")[1].strip()
            if 'http://' in l:
                url = l
            if 'Done processing filename :' in l:
                fname = l.split(" : ")[1]
            if 'Status :' in l:
                status = l.split(" : ")[1]
    
        valuable_data.append([fname, acc, url, status])
    
    print(valuable_data)
    

    使用Pandas写入CSV:to_csv module

    [['file1.pdf', '0.936046511627907', 'http://10.x.x.1/link', 'success']]