我试图从葡萄酒的名称中解析年份。我希望下面的代码能达到50%的准确性,但如果可能的话,我希望对此加以改进。有人知道我可以做些什么来提高准确性吗?
示例标题及其返回的解析年份:
Quinta dos Avidagos 2011 Avidagos Red (Douro) -> 0 incorrect
Rainstorm 2013 Pinot Gris (Willamette Valley) -> 2011 incorrect
Louis M. Martini 2012 Cabernet Sauvignon -> 2012 correct
Mirassou 2012 Chardonnay (Central Coast) -> 2012 correct
我正在执行的代码:
from dateutil.parser import parse
from datetime import datetime, timezone
df = "my pandas dataframe with wine titles"
dt = datetime.now()
dt.replace(tzinfo=timezone.utc)
year_parse = []
for i in range(len(df['title'])):
try:
ans = parse(df.title[i], fuzzy=True).year
year_parse.append(int(ans))
except:
ans = 0
year_parse.append(int(ans))
非常感谢您提出任何建议!
答案 0 :(得分:4)
您可以为此使用正则表达式。我希望葡萄酒名称具有相同的样式。
import re
exp = re.compile(r'\d{4}')
year_parse = list()
for name in df['title']:
year = exp.findall(name)[0]
year_parse.append(year)
year_parse 将所有年份都列在列表中。