附加整数值为python re的字符串

时间:2017-01-13 07:01:01

标签: python regex python-2.7 text-processing python-textprocessing

我试图使用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='

这可能是什么问题?

1 个答案:

答案 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='