以下に、ある文字列を別の文字列に置き換えるコードがありますが、そうではないようです。私は Python や正規表現の専門家ではありません。なぜこれがうまくいかないのか教えていただけますか。
def ReplaceCRC( file_path ):
file = open(file_path,'r+');
file_str = file.read()
if( file_str <> '' ):
crc_list = re.findall(r'_CalcCRC[(]\s*"\w+"\s*[)]', file_str);
strs_to_crc = []
new_crc_list = []
if( crc_list ):
for crc in crc_list:
quote_to_crc = re.search(r'"\w+"', crc);
str_to_crc = re.search(r'\w+', quote_to_crc.group() ).group();
final = hex(CalcCRC( str_to_crc ))[:2]
value = '%08X' % CalcCRC( str_to_crc )
final = final + value.upper()
final_crc = Insert( crc, ', ' + final + ' ', -1)
new_crc_list.append( final_crc )
if( new_crc_list <> [] ):
for i in range(len(crc_list)):
print crc_list[i]
print new_crc_list[i]
term = re.compile( crc_list[i] );
print term.sub( new_crc_list[i], file_str );
これは、操作対象のファイルです。
printf( "0x%08X\n", _CalcCRC("THIS_IS_A_CRC") );
printf( "0x%08X\n", _CalcCRC("PATIENT_ZERO") );
これが出力です
_CalcCRC("THIS_IS_A_CRC")
_CalcCRC("THIS_IS_A_CRC", 0x97DFEAC9 )
printf( "0x%08X\n", _CalcCRC("THIS_IS_A_CRC") );
printf( "0x%08X\n", _CalcCRC("PATIENT_ZERO") );
_CalcCRC("PATIENT_ZERO")
_CalcCRC("PATIENT_ZERO", 0x0D691C21 )
printf( "0x%08X\n", _CalcCRC("THIS_IS_A_CRC") );
printf( "0x%08X\n", _CalcCRC("PATIENT_ZERO") );
すべきことは、CRC 文字列を見つけて値を計算し、元の文字列のその場所に文字列を配置することです。私はたくさんのものを試してきましたが、何もうまくいかないようです。