Python 如何替换字符串中的主题(固定位置)
要修改的目标:Python 如何替换字符串中的主题(固定位置),python,string,replace,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(),
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()
,但失败了。我知道这是由于“字符串”是不允许修改的。任何人都可以帮忙 由于数据的性质,您可能会从将数据切片为变量并将其添加到列表或字典中获益。从那里,您可以使用for循环对特定值进行操作
这将有助于切片:
。。。对其余数据继续此操作
>>> mydict = {a:b,c:d,e:f,g:h}
然后用你的价值观词典,对它们进行操作。为此,这里有一个有用的答案:
我真希望这有帮助 您可以使用正则表达式查找旧日期,并定义一个函数来计算新日期:
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"
重新导入
从日期时间导入日期,日期时间
sample=“FST~C~D~170101 FST~C~D~170102 FST~C~D~170103 FST~C~D~170104”
def解析_yymmdd(yymmdd):
return datetime.strtime(yymmdd,%y%m%d').date()
第一个日期=解析年月日(“170101”)
def更换日期(旧日期):
old_date=parse_yymmdd(old_date.group(0))
新日期=日期。今天()+(旧日期-第一个日期)
返回新的\u日期.strftime(“%y%m%d”)
请把你的代码贴出来
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"