我试图使用python
中的正则表达式在字符串中插入日期link = 'branch=;deps=;date=;rev=;days=1;user='
date = "10.12.2016"
re.sub(r'(.*)(date=[^;]*)(.*)','\\1\\2'+date+'\\3',link)
我期待输出
'branch=;deps=;date=10.12.2016;rev=;days=1;user='
但我得到了这个,
'branch=;deps=;**\x88.12.2016**;rev=;days=1;user='
如果我在日期变量中有一些字符串,那么另一件事就是它正好替换。
date="hello"
re.sub(r'(.*)(date=[^;]*)(.*)','\\1\\2'+date+'\\3',link)
给出,
'branch=;deps=;**date=hello**;rev=;days=1;user='
这可能是什么问题?
答案 0 :(得分:3)
为什么这么难?跳过re
:
>>> link = 'branch=;deps=;date=;rev=;days=1;user='
>>> date = "10.12.2016"
>>> link = link.replace('date=','date='+date)
>>> link
'branch=;deps=;date=10.12.2016;rev=;days=1;user='
或re
,但基本相同:
>>> re.sub(r'date=','date='+date,link)
'branch=;deps=;date=10.12.2016;rev=;days=1;user='
脚本中的错误'\\1\\2'+date+'\\3'
评估为'\\1\\210.12.2016\\3'
。 '\\210'
计算为八进制转义符,相当于'\x88'
。您可以使用\g<n>
序列来解决这个问题:
>>> re.sub(r'(.*)(date=[^;]*)(.*)','\\1\\g<2>'+date+'\\3',link)
'branch=;deps=;date=10.12.2016;rev=;days=1;user='