首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

python特定数据替换有关问题~小白求教

2013-03-17 
python特定数据替换问题~小白求教就是文件longwire.ddb中有很多条(COND fanouto4_1_4p_0_8p (IOPATH in m

python特定数据替换问题~小白求教
就是文件longwire.ddb中有很多条(COND fanout=o4_1_4p_0_8p (IOPATH in muxo ((264:264:264) (264:264:264)))这样的句子。。。从中挑选出含有两个小写字母p的行然后从另外一个文件oct_4.txt中读取第六列的所有数据。。。替换掉这一句式的最后六个数字,就是例句中的264.。。总共有72行数据,从p4_1_4p_0_8p到p4_8_4p_8_8p,也就是说从(1,0)……(1,8)(2,0)……(8.8)自己写了一个下午试了两种方法,一种是直接写出这样的句式,用循环语句,更新掉最后的264这样的数据,另外一种就是找到数据找到点然后更新,但是都写的不正确啊。。。因为接触python没多久只能写出最简单的那种。。。求教啊~QAQ
[解决办法]
我写了个,由于不太清楚oct_4.txt的格式,我就这么定义吧:
col1 col2 col3 col4 col5 001 002 003 004 005 006
col1 col2 col3 col4 col5 011 012 013 014 015 016
...共72行
然后不知道怎么修改原来的文件,所以我先输出到output.ddb里面

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()

热点排行