Skip to main content
 首页 » 编程设计

python之正则表达式匹配并在python中替换

2024年11月01日31lyj

我有一个正则表达式和匹配文本文件的问题,我是 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) 

你能帮我吗,

感谢阅读。 BR!

请您参考如下方法:

在代码中的 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]"