错误的输出格式与re.sub

时间:2014-12-14 20:04:28

标签: python regex python-2.7 split

我希望此代码打印"ez_setup.py"而不是打印"ez_setup\x01"。请有人指出我正确的方向。

In [7]: url = 'http://sourceforge.net/p/mysql-python/mysqldb-2/ci/default/tree/ez_setup.py?format=raw'
In [8]: url_split = url.split('/')
In [9]: for item in url_split:
   ...:     if ".py" in item:
   ...:         file_name = re.sub(r"(.py).+", "\1", item)

In [10]: file_name
Out[10]: 'ez_setup\x01'

1 个答案:

答案 0 :(得分:1)

您需要\1使用file_name = re.sub(r"(.py).+", r"\1", item) # ^

>>> '\1'
'\x01'
>>> r'\1'
'\\1'
>>>

否则,它将被解释为转义序列:

.

另请注意,py是正则表达式中的特殊字符。它告诉Python匹配任何字符(换行符除外)。我认为你打算在file_name = re.sub(r"(\.py).+", r"\1", item) 之前逃避它:

{{1}}

现在Python将匹配一个文字句号。