python - 如何提高文本解析功能的性能?
问题描述
我试图从葡萄酒的标题中解析出年份。我希望通过下面的代码获得大约 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))
非常感谢任何建议!
解决方案
您可以为此使用正则表达式。我希望酒名有相同的模式。
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 全年都在列表中。
推荐阅读
- rust - kcov 正在按预期运行,但它永远不会完成
- javascript - 我如何通过 id 关联两个 JSON 文件(一个文件包含一个数组)?
- node.js - 如何在 for 循环中运行我的异步函数
- excel - 10 台计算机中只有一台无法使用宏
- weka - 只有一个排名属性,但选择了两个?Weka 中的 InfoGain Ranker
- excel - 作为循环的一部分偏移复制行
- python - 用于删除跨列具有相同内容的连续重复行的数据框
- vba - 发送电子邮件并回复全部给它
- c - 同名指针和正则变量
- python - 来自文件 csv 的错误 insert_one 文档 pymongo