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

时间:2021-02-05 18:31:38

标签: python regex pandas

我有示例字符串,我必须从 Pandas Dataframe 中提取年份。我不确定该怎么做?我尝试使用正则表达式的pandas提取方法,但没有成功。

输入:

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

Nattbuss 807 (1997)

Νόμος 4000 (1962)

输出:

1990

1997

1962

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

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

我的目标是从给定的表达式中提取 year

提前致谢。

2 个答案:

答案 0 :(得分:0)

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

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 Césio 137 - O Pesadelo de Goiânia (1990) 1990
1 Nattbuss 807 (1997) 1997
2 Νόμος 4000 (1962) 1962

答案 1 :(得分:0)

这应该会有所帮助:

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