2013-09-11 4 views
2

У меня есть одна проблема с регулярным выражением и текстовым файлом соответствия, я новичок в python. Мой файл выглядит следующим образом:regex match и replace in python

epg_slo3.txt:10346224:  Service_ID: 1 (0x0001) [= --> refers to PMT program_number] 
epg_slo3.txt:10346236:   Start_time: 0xdce0112500 [= 2013-09-09 11:25:00 (UTC)] 
epg_slo3.txt:10346237:   Duration: 0x0001000 [= 00:10:00 (UTC)] 
epg_slo3.txt:10346246:     event_name: "..©port" -- Charset: ISO/IEC 8859 special table 

Что мне нужно, чтобы, мне нужно что-то вроде этого:

Service_ID: 1 (0x0001) [= --> refers to PMT program_number]: --> Program 1 
Start_time: 0xdce0112500 [= 2013-09-09 11:25:00 (UTC)]: --> Start 2013-09-09 11:25:00 (UTC) 
Duration: 0x0001000 [= 00:10:00 (UTC)] --> Duration 00:10:00 (UTC) 
event_name: "..©port" -- Charset: ISO/IEC 8859 --> Category ©port 

Мой код выглядит следующим образом:

#!/usr/bin/python 
import codecs 
import re 

BLOCKSIZE = 1048576 

with codecs.open('epg_slo10.txt', "r", "iso-8859-2") as sourceFile: 
    with codecs.open('epg_slo.txt', "w", "utf-8") as targetFile: 
     while True: 
      contents = sourceFile.read(BLOCKSIZE) 
      if not contents: 
       break 
      targetFile.write(contents) 


input_file = open('epg_slo.txt', "r") 
output_file = open('epg_slo_kategorije.txt', "w") 

for line in input_file: 
    line = line.replace("Service_ID:","Program") 
    line = line.replace("Start_time:","Start") 
    line = line.replace("event_name:","Title") 
    output_file.write(line) 

Можете ли вы помочь мне с этим ,

thx для чтения. BR!

+0

Вы пытаетесь просто избавиться от всех 'epg_slo3.txt: 10346224:' как блоки? –

+0

Да, я хочу избавиться от них всех из файла. – Car

ответ

1

Перед line = line.replace в коде, добавьте следующую строку:

line = re.sub(r'^epg_slo3.txt:\d{8}:\s*','', line) 

например.
Если

line = "epg_slo3.txt:10346224:  Service_ID: 1 (0x0001) [= --> refers to PMT program_number]" 

затем после вызова re.sub:

line = "Service_ID: 1 (0x0001) [= --> refers to PMT program_number]" 
+0

Thx man !! Ты действительно помог мне! – Car

1

заменить regex приводится ниже с пустой строкой ""

/^epg_slo3.txt:\d{8}:\s*/ 
+0

Thx для решения. – Car