37,718
社区成员
发帖
与我相关
我的任务
分享
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
python特定数据替换问题~小白求教
http://bbs.csdn.net/topics/390262414
(COND fanout=o4_1_4p_0_8p (IOPATH in muxo ((264:264:264) (264:264:264)))
(COND fanout=o4_1_4p_1_8p (IOPATH in muxo ((264:264:264) (264:264:264)))
(COND fanout=o4_1_4p_2_8p (IOPATH in muxo ((264:264:264) (264:264:264)))
...
(COND fanout=o4_1_4p_8_8p (IOPATH in muxo ((264:264:264) (264:264:264)))
(COND fanout=o4_2_4p_0_8p (IOPATH in muxo ((264:264:264) (264:264:264)))
...
(COND fanout=o4_2_4p_8_8p (IOPATH in muxo ((264:264:264) (264:264:264)))
(COND fanout=o4_3_4p_0_8p (IOPATH in muxo ((264:264:264) (264:264:264)))
...
(COND fanout=o4_8_4p_8_8p (IOPATH in muxo ((264:264:264) (264:264:264)))
Version: 2012-11-05
Author: Crifan
"""
import re;
testStrList = [
"""(COND fanout=o4_1_4p_0_8p (IOPATH in muxo ((264:264:264) (264:264:264)))
(COND fanout=o4_1_4p_1_8p (IOPATH in muxo ((274:274:274) (274:274:274)))
(COND fanout=o4_1_4p_2_8p (IOPATH in muxo ((124:124:124) (124:124:124)))
(COND fanout=o4_1_4p_8_8p (IOPATH in muxo ((251:251:251) (251:251:251)))
(COND fanout=o4_2_4p_0_8p (IOPATH in muxo ((320:320:320) (320:320:320)))
(COND fanout=o4_2_4p_8_8p (IOPATH in muxo ((264:264:264) (264:264:264)))
(COND fanout=o4_3_4p_0_8p (IOPATH in muxo ((598:598:598) (598:598:598)))
(COND fanout=o4_8_4p_8_8p (IOPATH in muxo ((342:342:342) (342:342:342)))""",
];
for eachTestStr in testStrList:
foundAll2p = re.findall(".+?_\d+_\d+p_\d+_\d+p.+?\(\((?P<numToReplace>\d+):(?P=numToReplace):(?P=numToReplace)\)\s+?\((?P=numToReplace):(?P=numToReplace):(?P=numToReplace)\)\)\)", eachTestStr);
if(foundAll2p):
for each2p in foundAll2p:
print "each2p=%s"%(each2p);
# each2p=264
# each2p=274
# each2p=124
# each2p=251
# each2p=320
# each2p=264
# each2p=598
# each2p=342
#接着你自己处理每个字符串,进行你所需要的替换即可
另外,关于group的用法,专门写了教程,你可以参考参考:
【教程】详解Python正则表达式之: (…) group 分组
import re
strReplaceText = []
def test():
ReadReplaceText()
ReplaceSource()
def ReadReplaceText():
infile = open( 'oct_4.txt', 'r' )
for line in infile:
m = re.match( '\d+\s\d+\s(\d+)\s(\d+)\s(\d+)', line )
if m is not None:
strReplaceText.append( list( m.groups() ) )
infile.close()
def ReplaceSource():
infile = open( 'longwire.ddb', 'r' )
outfile = open( 'output.ddb', 'w' )
index = 0
for line in infile:
AppearCount = line.count( 'p' )
if AppearCount == 2:
m = re.match( '.+\((\d+):(\d+):(\d+)\) \((\d+):(\d+):(\d+)\)', line )
if m is not None:
replace = '('
replace += strReplaceText[index][0]
replace += ':'
replace += strReplaceText[index][1]
replace += ':'
replace += strReplaceText[index][2]
replace += ')'
replace *= 2
line = re.sub( '\((\d+):(\d+):(\d+)\) \((\d+):(\d+):(\d+)\)', replace, line )
index = index + 1
outfile.write( line )
outfile.close()
infile.close()
if __name__ == '__main__' :
test()
import re
strReplaceText = []
def test():
ReadReplaceText()
ReplaceSource()
def ReadReplaceText():
infile = open( 'oct_4.txt', 'r' )
for line in infile:
m = re.match( '\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+(\S+)\s(\S+)\s(\S+)\s(\S+)\s(\S+)\s(\S+)', line )
if m is not None:
OneRecord = []
OneRecord.append( m.group( 1 ) )
OneRecord.append( m.group( 2 ) )
OneRecord.append( m.group( 3 ) )
OneRecord.append( m.group( 4 ) )
OneRecord.append( m.group( 5 ) )
OneRecord.append( m.group( 6 ) )
strReplaceText.append( OneRecord )
infile.close()
def ReplaceSource():
infile = open( 'longwire.ddb', 'r' )
outfile = open( 'output.ddb', 'w' )
index = 0
for line in infile:
AppearCount = line.count( 'p' )
if AppearCount == 2:
m = re.match( '.+\((\d+):(\d+):(\d+)\) \((\d+):(\d+):(\d+)\)', line )
if m is not None:
replace = '('
replace += strReplaceText[index][0]
replace += ':'
replace += strReplaceText[index][1]
replace += ':'
replace += strReplaceText[index][2]
replace += ') ('
replace += strReplaceText[index][3]
replace += ':'
replace += strReplaceText[index][4]
replace += ':'
replace += strReplaceText[index][5]
replace += ')'
line = re.sub( '\((\d+):(\d+):(\d+)\) \((\d+):(\d+):(\d+)\)', replace, line )
index = index + 1
outfile.write( line )
outfile.close()
infile.close()
if __name__ == '__main__' :
test()