目标修改:
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 :(得分: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"