2017-04-13 59 views
-1

目標修改:如何替換字符串中的主體(固定位置)

Sample ="FST~C~D~170101 FST~C~D~170102 FST~C~D~170103 FST~C~D~170104" 

我要替換 「170101」, 「170102」, 「170103」, 「170104」 和 「170413」, 「170414」, 「170415」, 「170416」(當前日期和天數後) 輸出應該是:

"FST~C~D~170413 FST~C~D~170414 FST~C~D~0415 FST~C~D~170416" 

我試着用replace()但未能成功。我知道這是由於「字符串」不允許被修改。任何人都可以在此幫助!

+0

您具體是如何嘗試更換那些...? – deceze

+0

發佈您的代碼,請 –

回答

0

因爲你的數據存在的本質,你很可能受益於切片數據爲變量,並將它們添加到列表或字典。從那裏你可以使用for循環來操作特定的值。

這應該與切片幫助:Is there a way to substring a string in Python?

>>> x = "FST~C~D~170101 FST~C~D~170102 FST~C~D~170103 FST~C~D~170104" 
>>> a = x[:7] 
>>> print(a) 
'FST~C~D~' 
>>> b = x[8:13] 
>>> print(b) 
170101 

...您的數據

>>> mydict = {a:b,c:d,e:f,g:h} 

的其餘部分繼續這種然後與你的價值觀的字典,對它們進行操作。要做到這一點這裏有一個有用的答案:Replacing values in a Python list/dictionary?

我希望這有助於!

0

你可以使用正則表達式查找舊日期和定義一個函數來計算新:

import re 
from datetime import date, datetime 

sample = "FST~C~D~170101 FST~C~D~170102 FST~C~D~170103 FST~C~D~170104" 

def parse_yymmdd(yymmdd): 
    return datetime.strptime(yymmdd, '%y%m%d').date() 

first_date = parse_yymmdd('170101') 

def replace_date(old_date): 
    old_date = parse_yymmdd(old_date.group(0)) 
    new_date = date.today() + (old_date - first_date) 
    return new_date.strftime('%y%m%d') 

print(re.sub(r'(?<=FST~C~D~)\d+\b', replace_date, sample)) 
# "FST~C~D~170413 FST~C~D~170414 FST~C~D~170415 FST~C~D~170416"