2015-01-19 2 views
1

Я использую регулярное выражение для захвата значений из файла журнала с использованием python. Код выглядит следующим образом:Комбинирование двух списков из регулярного выражения с использованием Python

with open(logFile, 'r') as logfile_read: 
    for line in logfile_read: 
     line = line.rstrip() 
      if 'Time' in line: 
      iteration_time = re.findall(r'^Time = ([0-9]+)', line) 

      if 'cumulative' in line: 
       contCumulative_0 = re.search(r'cumulative = (-?[\d|.]+)', line) 
       if contCumulative_0:  
        cumvalue = contCumulative_0.groups(1) 
       merge = zip(iteration_time, cumvalue) 
       print merge 

выход с выше код:

[('1', '0.00142109')] 
[('2', '0.00354587')] 
[('3', '0.00166678')] 
[('4', '-0.00477095')] 
[('5', '-0.00814067')] 
[('6', '-0.00854863')] 
[('7', '-0.00710546')] 
[('8', '-0.00715775')] 
[('9', '-0.00580527')] 
[('10', '-0.0061622')] 

Я хотел бы выход быть как ниже, так что я могу записать в файл и построить его.

1 0.00142109 
2 0.00354587 
3 0.00166678 

и так далее. Я изо всех сил пытаюсь преобразовать вышеупомянутый кортеж в строки.

ответ

1

Добавить дополнительный цикл.

>>> l = [('1', '0.00142109')] 
>>> for (x,y) in l: 
...  print(x,y) 
... 
1 0.00142109 

ИЛИ

>>> for (x,y) in l: 
...  print(x+"\t"+y) 
... 
1 0.00142109 
+0

Благодаря @Avinash Raj для вашего решения. Он работает – hypersonics

1

использование присоединиться и карту, как показано ниже:

merge = ' '.join(map(double,merge[0])) 

, как вы пишете в файл, преобразование в два раза не является обязательным:

merge = ' '.join(merge[0]) 
+0

Благодаря @ user3 merge может объединять кортежи в строку по желанию. – hypersonics

1

Вы «Я хочу использовать функцию .join() Python присоединиться к списку/кортежу строк. Например:

>>> tup = ('1', '0.00142109') 
>>> print '\t'.join(tup) 
1 0.00142109 
Смежные вопросы