Python 如何从字符串中提取数字(年份)?

Python 如何从字符串中提取数字(年份)?,python,regex,pandas,Python,Regex,Pandas,我有样本字符串,我必须从熊猫数据框中提取年份。我不知道怎么做?我尝试使用正则表达式使用pandas提取方法,但没有成功 输入: Césio 137 - O Pesadelo de Goiânia (1990) Nattbuss 807 (1997) Νόμος 4000 (1962) 输出: 1990 1997 1962 我已尝试使用以下正则表达式:\d\d\d 但是在表达式中,μος4000(1962),我没有得到我预期的结果。我只想提取1962,而不是4000 我的目标是从给出的

我有样本字符串,我必须从熊猫数据框中提取年份。我不知道怎么做?我尝试使用正则表达式使用pandas提取方法,但没有成功

输入:

Césio 137 - O Pesadelo de Goiânia (1990)

Nattbuss 807 (1997)

Νόμος 4000 (1962)
输出:

1990

1997

1962
我已尝试使用以下正则表达式:
\d\d\d

但是在表达式中,
μος4000(1962)
,我没有得到我预期的结果。我只想提取
1962
,而不是
4000

我的目标是从给出的表达式中提取
年份


提前感谢。

这是一个非常简单的正则表达式

df = pd.read_csv(io.StringIO("""Césio 137 - O Pesadelo de Goiânia (1990)
Nattbuss 807 (1997)
Νόμος 4000 (1962)"""), names=["input"])

myre = re.compile(".*\(([0-9]+)\).*")
df.assign(output=df.input.str.extract(myre))

输出 输入 输出 0 塞西奥137-戈尼亚佩萨德罗(1990年) 1990 1. 纳特布斯807(1997) 1997 2. Νόμος 4000 (1962) 1962 这将有助于:

strings = ["Césio 137 - O Pesadelo de Goiânia (1990)", "Nattbuss 807 (1997)", "Νόμος 4000 (1962)"]

for string in strings:
    str = string.split(" ")
    last = len(str) - 1
    print(str[last].replace("(","").replace(")",""))
结果:

1990
1997
1962

请从下一页重复和。“演示如何解决此编码问题”不是堆栈溢出问题。我们希望您做出诚实的尝试,然后就您的算法或技术提出具体问题。堆栈溢出不是为了替换现有的文档和教程。询问教程参考资料或个人帮助在这里是离题的。请给出一个失败的例子。你也可以读我诚挚的道歉。我已经更新了我的问题。我将确保它不会被重复。从重复的
df['col'].str.extract('.*\(.*\).')
如果重复的答案有帮助,请务必对其进行投票。