2015-04-01 63 views
-2

我有一个文件格式如下:我想在pyhton和C++中解析它,并在ImpVarNo之后提取数字: 这种格式有很多行。在python,C++中解析文本文件,给出特定格式

sample.txt的

Start: 
abc pqr 
(FF_GGGGG_CONFIRM_TR):TC:20222,SeqNum:86,ImpVarNo:1000000008234436,Id:12,oneId:66454,a/c:1,ImpValue:905,Impvar:25,actualValue:905,actualVar:25,abc pqr xyz 
Impquantity:0,pgb ncr yepp 
Start: 
abc pqr 
(FF_GGGGG_CONFIRM_TR):TC:20222,SeqNum:86,ImpVarNo:1000000008234436,Id:12,oneId:66454,a/c:1,ImpValue:905,Impvar:25,actualValue:905,actualVar:25,abc pqr xyz 
Impquantity:0,pgb ncr yepp 
Start: 
abc pqr 
(FF_GGGGG_CONFIRM_TR):TC:20222,SeqNum:86,ImpVarNo:1000000008234436,Id:12,oneId:66454,a/c:1,ImpValue:905,Impvar:25,actualValue:905,actualVar:25,abc pqr xyz 
Impquantity:0,pgb ncr yepp 
Start: 
abc pqr 
(FF_GGGGG_CONFIRM_TR):TC:20222,SeqNum:86,ImpVarNo:1000000008234436,Id:12,oneId:66454,a/c:1,ImpValue:905,Impvar:25,actualValue:905,actualVar:25,abc pqr xyz 
Impquantity:0,pgb ncr yepp 

所以我写了下面的代码:

#!/usr/bin/env python 

import sys 
import re 

hand = open('newlogfile.txt') 
for line in hand: 
    r = re.compile("ExOrderNo:(\d+),") 
    print r 
+0

你可以在Python和C++ 11使用正则表达式。 – cdarke 2015-04-01 11:51:59

+0

选择一种语言,也显示你的努力,SO不是代码写入服务 – EdChum 2015-04-01 11:59:46

+0

'r = re.compile(“ImpVarNo:(\ d +),”)' – 2015-04-01 12:00:54

回答

-2

然而,这是最微不足道的方法,你可以用RegEx使你的代码更干净。

sample_file = open(sample.txt) 
contents = sample_file.readlines() 
for line in contents: 
    if line.startswith("(FF_GGGGG_CONFIRM_TR)"): 
     number_after_impvarno = int(line.split(",")[2][9:]) 
0
import re 
with open('newlogfile.txt') as f: 
    r = re.compile("ImpVarNo:(\d+),") 
    for line in f: 
     inp = r.findall(line) 
     if inp: 
      print(float(inp[0])) 

1000000008234436 
1000000008234436 
1000000008234436 
1000000008234436 

如果该行总是以同样的事情开始:

import re 
    with open('newlogfile.txt') as f: 
     r = re.compile("ImpVarNo:(\d+),") 
     for line in f: 
      if line.startswith("(FF_GGGGG_CONFIRM_TR)"): 
       print(r.findall(line)) 
+0

请检查添加的匹配代码。还有另一个有ImpVarNo的文件。在一行中写入一个值,然后是我们已经计算出的i值。它不打印任何点击?有没有更好的方式来做到这一点在python中? – Sumit 2015-04-02 03:04:33

+0

它还包含以下格式的值:['1000000002396045']我只是希望它包含1000000002396045以便可以进行比较。 – Sumit 2015-04-02 04:31:07

+0

如果你使用我的代码,你不会看到'['1000000002396045'] print(float(r.findall(line)[0]))' – 2015-04-02 09:46:49