2017-09-28 48 views
-4

前面我有以下問題:更換固定大小的子串在已知模式

  1. 我有一個很長的字符串(字符串的長度= 54883508)
  2. 我需要更換的所有子串很短的時間

該字符串包含的東西以下這種模式:

aaaaaaaaaaaaaaaaaaaaaaXXXXXXXXXCCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaXXXXXXXXXCCaaaaaaaaaaXXXXXXXXXCCaaaaaaaaaaaaXXXXXXXXXCCaaaaaaaaaaaaaaaaXXXXXXXXXCCaaXXXXXXXXXCCaXXXXXXXXXCCaaaaaaaaaaaaaaaaaaaaXXXXXXXXXCC 

我需要取代XXXXXXXXXCC但我唯一知道的是CC的位置,因爲XXXXXXXXX是動態的和隨機的。

有什麼想法?

+0

檢查python re模塊 – Vinny

+0

@ mkrieger1我不知道如何替換XXXXXXXXXCC,當我只知道CC的位置時,無論是XXXXXXXXX還是CC。 –

+0

@Vinny我做了,但我無法使用或找到合適的示例 –

回答

1

使用re.sub功能,你可以做到這一點

import re 
data = 'aaaaaaaaaaaaaaaaaaaaaaXXXXXXXXXCCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaXXXXXXXXXCCaaaaa aaaaXXXXXXXXXCCaaaaaaaaaaaaXXXXXXXXXCCaaaaaaaaaaaaaaaaXXXXXXXXXCCaaXXXXXXXXXCCaXXXXXXXXXCCaaaaaaaaaaaaaaaaaaaaXXXXXXXXXCC' 

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

這將改變CC11(?<=XXXXX)CC定義的模式表示只有在前綴爲XXXXX時才與CC匹配,否則不會。如果你不知道該模式,但知道字符數,你可以使用(?<=\w{9})CC來匹配任何9個字符。

+0

我不認爲字符串*字面*包含'CC'或'XXXX ...'。這就是爲什麼我要求一個實際的例子。 – mkrieger1

+0

所以你把'CC'改成你要找的東西,然後把XXX換成另一個正則表達式,比如'\ w' – Vinny