2017-05-26 84 views
0

enter image description here從電影標題欄中分離出一部電影

我正在爲推薦系統使用電影鏡頭數據集。我想從標題欄中分割出電影的年份並將其放入名爲Year的新功能中。

import re 
title = df3.title 
df3.Year = re.findall('[(...)]', title) 

標題
危險叟(1995)
軌枕(1996)
天堂電影院(諾沃天堂電影院)(1989)

+0

將在今年始終在結束了嗎?標題中是否會有其他可能被誤認爲一年的內容?這年有沒有可能?您的規格(如所有規格)僅僅是一個*起點* :-) – paxdiablo

+0

是的,每部電影的結尾都有一年的時間,每部電影都有一年的時間。但是,有一些觀察結果如下:七(a.k.a. Se7en)(1995);麥克馬倫兄弟,在(1995年) – Che

+0

這應該是罰款,你只需要在字符串的東西月底像'(\ d +)'正則表達式搜索 - 退房@donkopotamus的回答。 – paxdiablo

回答

1

假設它總是在字符串的末尾:

rgx = re.compile(r"(?:\((\d{4})\))?\s*$") 
match = rgx.search(txt) 

# group 1 will be None if not matched else eg '1989' 
year = match.group(1) 
+0

TypeError Traceback in () 1 rgx = re.compile(r「(?:\((\ d {4})\))?\ s'$') ----> 2 match = rgx.search(df3.title) 4#組1​​將爲無如果不匹配,則例如'1989' 5 year = match.group(1) TypeError:期望的字符串或緩衝區 – Che

+0

在rgx.search中使用df3.title嗎? – Che

+0

@Che這似乎是df3.title不是字符串...這是你來鍛鍊 – donkopotamus

-1
expr = re.compile('\((....)\)') 
df3.Year = re.findall(expr, title)[-1] 
+0

我正在以下errorTypeError回溯(最後最近一次調用) () 1 EXPR = re.compile( '\((....)\)') ----> 2 df3.Year = re.findall(表達式,標題)[ - 1]
Anaconda2 \ lib中\返回_compile(模式,標誌).findall(字符串) 183 if if sys(模式,字符串,標誌)179 183空的匹配包含在結果中。 .hexversion> = 0x02020000: TypeError:預期的字符串或緩衝區 – Che

+0

您的代碼已被錯誤地轉錄答案。 '((...))'與給定的正則表達式不是同一個正則表達式,而且它看起來像你正在調用findall來編譯返回值。 – Sniggerfardimungus