我希望此代码打印"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'
答案 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将匹配一个文字句号。