Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何替换字符串中的主题(固定位置)_Python_String_Replace - Fatal编程技术网

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"