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

2024-09-28 13:17:44 发布

您现在位置:Python中文网/ 问答频道 /正文

要修改的目标:

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

我想用“170413”替换“170101”、“170102”、“170103”、“170104”, “170414”、“170415”、“170416”(当前日期和落后天数) 输出应为:

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

我试过replace(),但失败了。我知道这是由于“字符串”是不允许修改的。任何人都可以帮忙!你知道吗


Tags: sample字符串目标replacefst天数
2条回答

由于数据的性质,将数据切片为变量并将其添加到列表或字典中可能会对您有所帮助。从那里可以使用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?

我真希望这有帮助!你知道吗

您可以使用正则表达式来查找旧日期,并定义一个函数来计算新日期:

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"

相关问题 更多 >

    热门问题