Python 正则表达式来删除版权

Python 正则表达式来删除版权,python,regex,Python,Regex,我需要从版权中删除年份。版权可采用以下形式: 2011 Company --> 'Company' Company 2011 --> 'Company' 2011 1 Company 2 --> '1 Company 2' 1 Company 2 1944 --> '1 Company 2' 我如何删除4位数字版权并仅获取公司(请注意,公司名称中可能包含数字) 到目前为止,我已经尝试了[0-9]{4},但在将其形成一个搜索时遇到了困难 >>> a=re

我需要从版权中删除年份。版权可采用以下形式:

2011 Company --> 'Company'
Company 2011 --> 'Company'
2011 1 Company 2 --> '1 Company 2'
1 Company 2 1944 --> '1 Company 2'
我如何删除4位数字版权并仅获取公司(请注意,公司名称中可能包含数字)

到目前为止,我已经尝试了[0-9]{4},但在将其形成一个搜索时遇到了困难

>>> a=re.search('[0-9]{4}',a)
>>> a
<_sre.SRE_Match object at 0x10527b780>
>>> a.match(0)
>>> AttributeError: match
>a=re.search('[0-9]{4}',a)
>>>a
>>>a.匹配(0)
>>>属性错误:匹配
试试这个

>>> import re
>>> s = '2011 Company'
>>> removed = re.sub('(^\d{4})|(\d{4}$)','',s).strip()
>>> print removed
表示4位数字,或者您可以这样书写以修剪空白:

\s*\d{4}\s*

这就是你想要的吗?

如果公司名称和电话号码之间可以有2,那么还有什么?换行?在需要运行正则表达式之前,您知道公司名称吗?你能设想一下这一年的情况吗,例如,“它将在1900年到2020年之间?”
import re

def removeYear(inputStr):
    pattern1 = re.compile(r'^\d{4,4}\ (.*)')
    outputStr = re.sub(pattern1, r"\1", inputStr)

    pattern2 = re.compile(r'(.*)\ \d{4,4}$')
    fixedStr = re.sub(pattern2, r"\1", outputStr)
    print '-->'+ fixedStr

if __name__ == '__main__':
    removeYear('2011 Company')
    removeYear('Company 2011')
    removeYear('2011 1 Company 2')
    removeYear('1 Company 2 1944')
import re

def removeYear(inputStr):
    pattern1 = re.compile(r'^\d{4,4}\ (.*)')
    outputStr = re.sub(pattern1, r"\1", inputStr)

    pattern2 = re.compile(r'(.*)\ \d{4,4}$')
    fixedStr = re.sub(pattern2, r"\1", outputStr)
    print '-->'+ fixedStr

if __name__ == '__main__':
    removeYear('2011 Company')
    removeYear('Company 2011')
    removeYear('2011 1 Company 2')
    removeYear('1 Company 2 1944')