在已知模式前面替换固定大小的子串

时间:2017-09-28 10:48:25

标签: python string substring

我有以下问题:

  1. 我有一个很长的字符串(字符串长度= 54883508)
  2. 我需要在很短的时间内替换所有子字符串
  3. 字符串包含遵循此模式的内容:

    aaaaaaaaaaaaaaaaaaaaaaXXXXXXXXXCCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaXXXXXXXXXCCaaaaaaaaaaXXXXXXXXXCCaaaaaaaaaaaaXXXXXXXXXCCaaaaaaaaaaaaaaaaXXXXXXXXXCCaaXXXXXXXXXCCaXXXXXXXXXCCaaaaaaaaaaaaaaaaaaaaXXXXXXXXXCC
    

    我需要替换XXXXXXXXXCC,但我唯一知道的是CC的位置,因为XXXXXXXXX是动态且随机的。

    有什么想法吗?

1 个答案:

答案 0 :(得分:1)

使用re.sub功能可以执行此操作

import re 
data = 'aaaaaaaaaaaaaaaaaaaaaaXXXXXXXXXCCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaXXXXXXXXXCCaaaaa  aaaaXXXXXXXXXCCaaaaaaaaaaaaXXXXXXXXXCCaaaaaaaaaaaaaaaaXXXXXXXXXCCaaXXXXXXXXXCCaXXXXXXXXXCCaaaaaaaaaaaaaaaaaaaaXXXXXXXXXCC'

print re.sub('(?<=XXXXXXXXX)CC', '11', data)

这会将CC更改为11。由(?<=XXXXX)CC定义的模式表示仅在前面有XXXXX 时匹配CC,否则表示不匹配。如果您不知道模式,但知道字符数,可以使用(?<=\w{9})CC来匹配前面的任意9个字符。