如何替换字符串中的主题(固定位置)

时间:2017-04-13 08:01:09

标签: python string replace

目标修改:

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()但失败了。我知道这是一个"字符串"不允许修改。任何人都可以提供帮助!

2 个答案:

答案 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?

我希望这有帮助!

答案 1 :(得分: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"