【发布时间】:2018-12-16 08:52:31
【问题描述】:
我正在尝试从葡萄酒的标题中解析年份。我希望通过下面的代码获得大约 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))
非常感谢任何建议!
【问题讨论】:
-
看起来像一个正则表达式的任务,类似于 \b\d{4}\b
-
如果有可能 4 个连续的数字而不是年份可能在一行中,您可以稍微改进一下以提高准确性:
\b[19|20]\d{2}\b。